派生类与继承
保护成员可以被派生类的成员函数访问,但是对于外界是隐藏起来的,外部函数不能访问它。
创建派生类对象时,首先执行基类的构造函数,随后再执行派生类的构造函数;当撤销派生类对象时,则先执行派生类的析构函数,随后再执行基类的析构函数。
当基类含有带参数的构造函数,派生类必须定义构造函数。
如果派生类的基类也是一个派生类,则每个派生类只需负责其直接基类的构造,依次上溯。
虚基类
解决二义性。如果一个派生类是从多个基类派生出来的,而这些基类又有一个共同的基类,则在这个派生类中访问这个共同的基类中的成员时,可能产生二义性。
class base1:virtual public base{}
若同一层次中同时包含虚基类和非虚基类,应先调用虚基类的构造函数,再调用非虚基类的构造函数,最后调用派生类的构造函数。
class X:public Y,virtual public Z{}