基类能否处理派生类返回的对象或参数

问题描述

我看了我们公司的OA产品,有个新增记录的页面是继承了一个基类,然后这个派生类实现了基类的的虚方法,返回的是一个object对象,再然后就可以实现数据的保存,请问这个在基类中是如何实现这个过程的,难道基类可以接受来自派生类返回的对象吗?本人是一个刚毕业的程序员,求大神指导,

解决方案

解决方案二:
当然可以了。反过来不行。google里氏替换原则

时间: 2024-12-07 20:40:16

基类能否处理派生类返回的对象或参数的相关文章

通过基类来声明派生类有何意义?

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication1{classProgram{staticvoidMain(){MyBaseClassc=newMyDerivedClass();Console.ReadLine();}}publicclassMyBaseClass{pub

第13周-任务3-抽象基类Shape及派生类Circle、Rectangle和Triangle

[题目]写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形).Rectangle(矩形).Triangle(三角形).用如下的mian()函数,求出定义的几个几何体的面积和. int main() { Circle c1(12.6),c2(4.9); //建立Circle类对象c1,c2,参数为圆半径 Rectangle r1(4.5,8.4),r2(5.0,2.5); //建立Rectangle类对象r1,r2,参数为矩形长.宽 Triangle t1(4.5,8.4

第13周-任务4-抽象类CSolid及派生类CCube、CBall、CCylinder

[题目]设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数.设计个派生类CCube.CBall.CCylinder,分别表示正方体.球体及圆柱体.在main()函数中,定义基类的指针p(CSolid *p;),利用p指针,输出正方体.球体及圆柱体对象的表面积及体积. [参考解答] #include "iostream" using namespace std; const double pai=3.1415926; // 抽象立体图形基类 class CSolid { pub

如何在派生类中的隐藏基类的虚拟重载函数

我创建了一个类,基类中有虚拟重载函数.我想在派生类中改写基类中的虚拟重载函数.代码如下: #include <iostream.h>class B {private: int nNumber;public: virtual void test() { cout << "B::test()\n"; } virtual void test(int x) { nNumber = x; // 将传入的参数赋值给私有成员 cout << "B::te

为什么基类的析构函数不是虚函数时,就不会调用派生类的析构函数

问题描述 为什么基类的析构函数不是虚函数时,就不会调用派生类的析构函数 我知道,基类的析构函数要生命为虚函数,不然用基类指针删除派生类对象时只会调用基类的析构函数,而不会调用派生类的析构函数,从而发生内存泄露.但是为什么会这样?为什么基类析构函数不是虚函数时,就不会调用派生类析构函数而是虚函数时就会调用派生类析构函数???有没有大神指点一下. 看了几位的回答,都不是我想要的.我已经知道了不声明为虚函数,会造成内存泄露.我想知道为什么会造成内存泄露,原因是什么. 解决方案 1. 析构函数跟普通成员

编程-为什么派生类的指针指向基类对象 还可以调用派生类的函数?

问题描述 为什么派生类的指针指向基类对象 还可以调用派生类的函数? 想不明白啊,高手帮帮忙吧 Derived1 * hh = static_cast(new Base); hh->derivedfunction(); // 这里竟然是可以的 为什么呢 hh指向的是一个基类对象啊?? 而且即使derivedfunction里面用到派生类的私有成员也是可以的, 这到底是为什么啊??? 解决方案 虽然语法上让你通过了,static_cast是强制类型转换,所以语法没办法阻止你错误的做法,但是实际运行结

详解C++中基类与派生类的转换以及虚基类_C 语言

C++基类与派生类的转换 在公用继承.私有继承和保护继承中,只有公用继承能较好地保留基类的特征,它保留了除构造函数和析构函数以外的基类所有成员,基类的公用或保护成员的访问权限在派生类中全部都按原样保留下来了,在派生类外可以调用基类的公用成员函数访问基类的私有成员.因此,公用派生类具有基类的全部功能,所有基类能够实现的功能, 公用派生类都能实现.而非公用派生类(私有或保护派生类)不能实现基类的全部功能(例如在派生类外不能调用基类的公用成员函数访问基类的私有成员).因此,只有公用派生类才是基类真正的

C++派生类与基类的转换规则_C 语言

只有公用派生类才是基类真正的子类型,它完整地继承了基类的功能.基类与派生类对象之间有赋值兼容关系,由于派生类中包含从基类继承的成员,因此可以将派生类的值赋给基类对象,在用到基类对象的时候可以用其子类对象代替. 具体表现在以下几个方面: 派生类对象可以向基类对象赋值. 可以用子类(即公用派生类)对象对其基类对象赋值.如 A a1; //定义基类A对象a1 B b1; //定义类A的公用派生类B的对象b1 a1=b1; //用派生类B对象b1对基类对象a1赋值 在赋值时舍弃派生类自己的成员. 实际上

详谈C++中虚基类在派生类中的内存布局_C 语言

今天重温C++的知识,当看到虚基类这点的时候,那时候也没有太过追究,就是知道虚基类是消除了类继承之间的二义性问题而已,可是很是好奇,它是怎么消除的,内存布局是怎么分配的呢?于是就深入研究了一下,具体的原理如下所示: 在C++中,obj是一个类的对象,p是指向obj的指针,该类里面有个数据成员mem,请问obj.mem和p->mem在实现和效率上有什么不同. 答案是:只有一种情况下才有重大差异,该情况必须满足以下3个条件: (1).obj 是一个虚拟继承的派生类的对象 (2).mem是从虚拟基类派