1.单继承多继承
派生类继承的内容:
原有基类成员,新增新的数据成员函数成员,
一般情况下,构造函数和析构函数不被继承,而C++11中使用using可以继承
2.派生类访问权限:
- 公有继承:
基类的public、protected、private属性在派生类中不变
派生类的成员函数:对基类的public、protected能访问,private不能直接访问,可通过公有接口访问
派生类的对象:只能访问基类public成员
- 私有继承:
基类的public、protected、private属性在派生类中都变成private
派生类的成员函数:对基类的public、protected能访问,private不能直接访问,可通过公有接口访问
派生类的对象:不能访问基类任何成员
- 保护继承:
基类的public、protected属性在派生类中都变成protected,
派生类的成员函数:对基类的public、protected能访问,private不能直接访问,可通过公有接口访问
派生类的对象:不能访问基类任何成员
3.类型转换:基类与派生类之间
公有派生类对象可以作为基类对象使用
4.派生类的构造函数、复制构造函数、析构函数
- 构造函数
- 从基类继承构造函数:using B::B;
- 单继承:
- 派生类名::派生类名(基类形参,派生类形参):基类名(参数表),派生类初始化表{};
- 多继承:
- 派生类名::派生类名(基类形参,派生类形参):基类名1(参数表1),基类名2(参数表2),派生类初始化表{};
- 多继承和类组合时的构造函数:
- 派生类名::派生类名(基类形参,派生类形参):基类名1(参数表1),基类名2(参数表2),本类成员(对象成员)派生类初始化表{};
- 调用构造函数顺序:先基类,后派生类,基本按照声明定义的顺序
- 复制构造函数
- 先调用基类复制构造函数,后派生类复制构造函数
- 析构函数
- 先调用派生类析构,再调用基类析构
- 访问从基类继承的成员
- 和派生类同名的成员的基类调用,加基类名::限定来访问
5.虚基类virtual 二义性冗余
菱形继承时二义性