子类的默认成员函数
构造函数
- 先调用父类的默认构造, 初始化父类的成员
- 再调用子类的构造, 初始化子类的的成员
- 父类没有默认构造, 在子类初始化列表中显示调用父类的构造
拷贝构造函数
- 子类的默认拷贝构造调用父类的拷贝构造
- 在自己定义拷贝构造的初始化列表中先调用父类的拷贝构造,
如果不调用则自动调用父类默认构造函数
赋值运算符重载
- 默认的赋值运算符重载函数,自动调用父类的赋值运算符重载函数
- 显示定义的赋值运算符重载, 会和父类的赋值运算符重载函数同名, 形成隐藏
析构函数:
- 在底层都是 : destructor
* 会造成同名隐藏 - 子类析构不要调用父类的析构
菱形继承 : 数据冗余 二义性(钻石继承)
- virtual 虚拟继承 解决
- 公共的父类成员只保存一份, 通过虚基表指针和虚基表访问父类公共成员
- 虚基表 : 虚基表指针
多继承中指针偏移
- 类型决定能够解引用的内容(查看字节的个数)
- 对应类型的指针只能获取对应类型的成员