-
多继承的子类要用初始化列表的方式初始化子类的成员列表,实例化子类对象的时候,先执行父类的构造函数,父类的构造函数的执行顺序按照初始化成员列表的先后顺序执行。<br> 析构函数的执行顺序和构造函数的执行顺序相反 用初始化列表比较好的情况:传给构造函数的值要分别传给几个对象处理的时候,用 const 修饰的成员的时候,还有就是当初对象成员的时候。查看全部
-
虚继承和普通继承最大的不同是虚继承相当于在子类中有一个指向父类的指针,而在菱形继承时,就会继承一个指针。因为普通继承每一个函数或变量都是xxx的,但是虚继承这个指针并不是子类的一部分,只是有一个。当二代子类在继承子类时,两个指针重合,就省去了很多空间。
class A {...}; class B1:virtual public A {...}; class B2:virtual public A {...}; class c:public B1,public B2 {...};
另外,记性不好,在这里记一下初始化列表
class A:public B { public: A(...):a(...),b(...),B(...){} private: int a,b; };
另外,菱形继承最后二代子类可以用虚继承。
B1,B2中都有A的指针,如果是C分别继承B1,B2的指针,这其中也包含A的指针。
查看全部 -
使用虚继承时虽然不会重复调用最顶层父类的构造函数和析构函数,但参数只能使用最顶层父类默认值,而无法从子类中获得传入的值
查看全部 -
1\公有成员可以直接访问,可以间接通过自身类的公有函数访问,也可以通过子类的公有函数访问
2\保护成员不可以直接访问,可以间接通过自身类的公有函数访问,也可以通过子类的公有函数访问
3\私有成员不可以直接访问,可以间接通过自身类的公有函数访问,不可以通过子类的公有函数访问
查看全部 -
子类有多于1个的父类,或者派生类有多于1个的基类,此即为 [多继承]查看全部
-
虚析构函数 Soldier继承Person 1、如果没有使用虚析构函数 当使用Person *p = new Soldier; 会分配Soldier的内存 delete p;p=NULL; Person p会执行析构函数释放内存 但不会释放Soldier的内存 这就造成内存泄露! 所以使用虚函数virtual 可以同时释放Person和Soldier的内存查看全部
-
#include<string> using namespace std; 记住这种格式!!!查看全部
-
使用初始化列表由Worker对Person进行初始化,可以避免在Worker中重复Person的逻辑。查看全部
-
当B使用公有继承A的private下的数据成员时,子类B会把A类中的private下的成员继承过来,只是在B类中定义的成员函数并不能访问A类的private下的数据成员,但是从A类public下继承的A类的封装函数是可以访问A类的private下的数据成员。总之B类用public继承的A类的private数据成员的的确确是存在于B当中,用sizeof函数就可以得到结果,只是B类不能像访问自己类的private下的数据成员那样访问他们。用类定义的对象不论什么时候都只能访问自己的public下的成员和成员函数。查看全部
-
A类有void ABC(),B类也有void ABC(),B类公有继承A类,基类中的ABC()成员函数就会被B类中的ABC()成员函数隐藏,隐藏的特性体现在:当实例化B的对象的时候,使用该对象只能够直接的访问到子类B中的ABC()成员函数,而无法访问父类中的ABC()成员函数 从语法的角度来说,同名的数据成员也具有隐藏的特征<br> 父子关系,成员同名,隐藏 对象调用同名的成员函数:直接soldier.play();调用的是自己的成员函数,如果要调用父类的成员函数,则需要加上父类的类名,soldier.Person::play()查看全部
-
C和老师说的不一样啊,老师说的是可以继承但不能访问查看全部
-
公有成员可以直接访问,可以间接通过自身类的公有函数访问,也可以通过子类的公有函数访问 保护成员不可以直接访问,可以间接通过自身类的公有函数访问,也可以通过子类的公有函数访问 私有成员不可以直接访问,可以间接通过自身类的公有函数访问,不可以通过子类的公有函数访问查看全部
-
无论是多少重继承,父类都可以通过引用或者指针来访问到直接子类或者间接子类所继承它的数据成员。查看全部
-
多继承是一个对象继承多个对象,多重继承是一个对象层层继承上一个对象就像是孙子通过多重继承爷爷一样。每个子类都是父类的一个对象(isA),孙子也可以是爷爷的一个对象(也是 isA 关系) 实例化孙子类,会先执行爷爷的构造函数,在执行爸爸的构造函数,最后执行孙子的构造函数。销毁的时候,按照构造函数的逆序执行,先执行孙子的析构函数,在执行爸爸的析构函数,最后执行爷爷的析构函数。查看全部
-
起航--离港--封装--继承查看全部
举报
0/150
提交
取消