C++核心编程和桌面应用开发 第八天(继承)
目录
1.继承
1.1继承语法
1.2继承方式
1.3继承中的对象模型
1.4继承中的构造和析构
1.5继承中的同名成员处理
1.5.1同名属性处理
1.5.2同名成员函数处理
1.6继承中的同名静态成员处理
1.6.1同名静态成员属性处理
1.6.2同名静态成员函数处理
1.7多继承
1.继承
1.1继承语法
class 子类:继承方式 父类
总结:
- 派生类可以使用基类的属性和方法;
- 派生类包含从基类继承的成员和自己增加的成员。
1.2继承方式
- 公共继承 public
- 私有继承 private
- 保护继承 protected
1.3继承中的对象模型
子类对象的大小:父类中非静态成员属性+子类非静态成员属性
1.4继承中的构造和析构
若子类中存在其他类对象作为子类成员,则其他类会先构造,再构造子类对象
构造函数:父类构造——其他类对象构造——子类构造
析构函数:子类析构——其他类对象析构——父类析构
子类不会继承的内容:
- 默认构造
- 析构函数
- 拷贝构造
- operator=
1.5继承中的同名成员处理
1.5.1同名属性处理
子类和父类中的成员同名时,直接访问,获得的是子类的,加作用域,获得的是父类的
1.5.2同名成员函数处理
与同名属性做法一致。
1.6继承中的同名静态成员处理
1.6.1同名静态成员属性处理
子类和父类中的静态成员属性同名时,子类访问自身属性可通过对象/类名访问,子类访问父类属性时,可通过对象/类名访问,但要加上父类的作用域
1.6.2同名静态成员函数处理
与同名静态成员属性做法一致。
1.7多继承
C++允许一个类继承多个类
class 子类:继承方式 父类1,继承方式 父类2...
注意事项:
多继承可能父类中会有同名成员出现,需要加作用域区分