持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情
前言
今天笔记的主要内容是:
- 多继承的构造顺序
继承的总结
C++支持类的继承机制:
继承是面向对象设计的关键概念之一。
子类可以继承父类的所有公有和保护的数据成员和成员函数。
访问权限为保护的父类,对于子类来说是公有的,但对于其他类来说是无法访问的。
对于派生类来说,基类中的私有成员也是无法访问的。
C++支持多重继承。
多重继承指的是一个类派生于多个基类。
多重继承使得子类获取了多个基类的属性。
对于上述,无论是继承还是多重继承,我们一般指的是公有方式的继承,即公共继承。
因为在类编程中,公共继承占多数,保护继承和私有继承比较少。
多继承下的构造顺序
无论是单继承还是多继承,派生类的构造函数都会激活所有基类的构造函数。并将相应的参数传递给它们。
在继承机制下,构造对象的顺序为:
- 虚继承基类的构造
- 非虚继承基类的构造
- 成员对象的构造
- 类自己的构造
举个例子,看下列代码:
输出结果如下:
可以看出:
子类Son的虚基类Base1最先构造。
尽管在子类Son中继承的顺序并不是最前面。
接着,子类的非虚继承Base2其次构造。
子类的成员对象Base3随后构造.
而最后才是子类Son自己构造函数的调用。
写在最后
总结如下:
当一个类继承于基类,并且自身还包含有其他类的成员对象的时候,构造函数的调用顺序为:
- 调用基类的构造函数(虚继承优先)
- 调用成员对象的构造函数
- 调用自身的构造函数
好了,今天的笔记就到这里,欢迎大家到评论区一起讨论!