-
公有继承 class A:public B 保护继承 class A:protected B 私有继承 class A:private B 公有继承时基类中各成员属性保持不变,基类中private成员被隐藏。 派生类的成员只能访问基类中的public/protected成员,不能访问private成员; 派生类的对象只能访问基类中的public成员。 保护继承时基类中各成员属性均变为protected,且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,不能访问private成员;派生类的对象不能访问基类中的任何的成员。 私有继承时基类中各成员属性均变为private,且基类中private成员被隐藏。派生类的成员也只能访问基类中的public/protected成员,不能访问private成员 派生类的对象不能访问基类中的任何的成员。查看全部
-
项实例化一个子类,必先实例化一个基类,且这种实例化是隐形的查看全部
-
继承方法查看全部
-
继承方式查看全部
-
派生类和子类查看全部
-
c++中的继承查看全部
-
isA概念:<br> (1)当一个子类的对象去初始化或者对一个父类的对象赋值时,本质上就是把子类从父类所继承下的数据成员赋值给父类的原有的数据成员,此时子类对象的其他数据成员就会丢失<br> (2)若是父类的一个对象指针指向一个子类的对象,则访问,也只能访问到从父类继承下来的数据成员。(本质上都是在访问自己数据成员所在的内存空间,人为概念上区分了,但是硬件本质上操作的还是同一块内存区域)查看全部
-
不是虚继承的情况下,实例化子类对象的时候,要分别执行其2个父类的父类构造函数,再分别执行2个父类的构造函数,因为继承关系中,必须实例化父类对象后(执行父类的构造函数)才能实例化子类对象(执行子类的构造函数),销毁的时候也要分别执行这个子类2个父类的析构函数及父类各自的父类的析构函数。<br> 用了虚继承后只执行一次爷爷构造函数一次爸爸构造函数(2个爸爸构造函数都只执行一次)一次孙子构造函数,爷父孙析构函数也是只执行一次。<br> 虚继承的情况下菱形继承作为最顶层的父类并没有进行参数的传递,也就是参数只使用了顶层父类的默认参数而无法从子类中获得传入的参数 正因为继承了2个爷爷的数据成员才能给他赋2个值,如果只有1个数据成员就只能得到一个值。继承到2个值是因为2个爸爸类分别继承爷爷类的数据成员,在继承给孙子类,孙子类就得到了2个爷爷类的数据成员,本质上是爸爸类分别有一个爷爷类的数据成员。(用虚继承解决)查看全部
-
(1)类的重定义错误提示,即在一个工程项目里面一个类被定义了两次。为什么会出现这样的情况呢?答:原来在Worker类和Farmer类中包含了两次“Person.h”的头文件<br> (2)解决办法:用宏定义去解决重定义错误,在被多个类继承的基类顶端写上以下代码: #ifndef PERSON_H<br> #define PERSON_H<br> ......<br> (结尾处)<br> #endif查看全部
-
虚继承可以解决菱形继承的数据冗余问题 virtual关键字可以放在public的前面 也可以放在public的后面 前面的类被称为虚继类查看全部
-
菱形继承会导致数据冗余,一个对象中会有两份同一父类的数据。用虚继承可以解决冗余问题。就是两个爸爸类用虚公有继承的方式继承同一个父类,然后孙子类按照多继承的方式(写法)继承两个爸爸类,就可以只继承到一个爷爷类的数据,若不用虚公有继承的方式,就会导致孙子类继承到2个重复的爷爷类数据成员或者成员函数查看全部
-
多继承是一个对象继承多个对象,多重继承是一个对象层层继承上一个对象就像是孙子通过多重继承爷爷一样。每个子类都是父类的一个对象(isA),孙子也可以是爷爷的一个对象(也是 isA 关系) 实例化孙子类,会先执行爷爷的构造函数,在执行爸爸的构造函数,最后执行孙子的构造函数。销毁的时候,按照构造函数的逆序执行,先执行孙子的析构函数,在执行爸爸的析构函数,最后执行爷爷的析构函数。查看全部
-
多继承和多重继承是不同的概念: (1)多继承,指的情况是一个子类有多个父类 (2)多重继承,指的是一个“步兵类继承了士兵类,士兵类继承了兵类”查看全部
-
将函数定义在main函数的上方 在使用的时候 不用在进行独立的声明了 参数是对象时 在接受参数时 会临时的实例化一个对象 在函数执行完后 临时对象被销毁 参数是引用 在传入参数时 会为参数起一个别名 使用引用和指针 不会产生临时变量 效率比较高查看全部
-
虚析构函数是为了解决基类的指针指向派生类对象,并用基类的指针删除派生类对象。 如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性。 所以基本的一条是:无故的声明虚析构函数和永远不去声明一样是错误的。实际上,很多人这样总结:当且仅当类里包含至少一个虚函数的时候才去声明虚析构函数。 抽象类是准备被用做基类的,基类必须要有一个虚析构函数,纯虚函数会产生抽象类,所以方法很简单:在想要成为抽象类的类里声明一个纯虚析构函数。 用父类指针指向从堆中分配内存的子类对象 通过父类的指针销毁时只调用了父类的析构函数 没有子类的 可能会导致内存泄漏 这种情况需要虚析构函数解决 该关键字可以被继承:virtual!!加了这个关键字则析构函数可以被继承下去查看全部
举报
0/150
提交
取消