派生类的构造函数
鉴于已经掌握类继承的一些非常基本的知识,比如类继承的用法,含义,定义等。这里将更加深入理解类继承本身,详尽阐述继承的特性和原因。
我们知道,派生类的构造函数必须使用基类的构造函数来构造基类,而且只能使用列表初始化的方式去构造基类,这是为什么?
事实上,如果我们创建一个派生类的对象,那么计算机会调用派生类的构造函数,但是此时我们还没有真正的构造基类,派生类命名是基类的衍生,是基类的补充,但是我们调用派生类的构造函数并不能真正的构造基类。也就是说,基类的构造函数必须早于派生类的构造函数调用。、
之前我们学习过构造函数的列表初始化,在整整的执行过程中,首先执行列表中的初始化,然后再执行构造函数的函数体部分,这就是基类必须使用列表初始化的原因——它必须早于派生类构造。
有几点需要注意
- 如果你没有调用基类的构造函数,编译器会自动调用默认的基类构造函数。
- 析构函数和构造函数的调用相反。首先析构派生类衍生的部分,然后析构基类。
多态公有继承
有的时候我们希望派生类和类再同义方法上具有不同的行为,比如说输出信息,派生类输出派生类的信息,基类输出基类的信息。
这种具有复杂行为的行为称为多态
多态公有继承使用大概两种方法实现
class