派生类共有三种C++类继承方式:公有继承(public),私有继承(private),保护继承(protected)。
(1)公有继承
基类的公有成员和保护成员可以作为其派生类的公有成员和保护成员
派生类的成员函数可以访问基类中的公有成员和保护成员,无法访问基类中的私有成员
派生类的对象可以访问基类的公有成员
(2)私有继
承
基类的公有成员和保护成员都作为其派生类的私有成员
在私有继承时,基类的成员只能由直接派生类访问,而无法再往下继承
(3)保护C++类继承
基类的所有公有成员和保护成员都成为派生类的保护成员
基类的公有成员和保护成员只能被它的直接派生类成员函数或友元访问
构造函数和析构函数不能被继承
因此构造派生类的对象时,需要对基类数据成员,新增数据成员和成员对象的数据成员进行初始化。
派生类构造函数的参数表部分既需要包含子类某些数据成员的初始值,也要包含基类的数据成员的初始值。
如果基类没有默认的构造函数,那么派生类必须具有给基类构造函数提供参数的构造函数。
派生类构造函数一般语法如下:
派生类名::派生类名(参数总表) :基类名1(参数表1),...,基类名n(参数表n) { 初始化语句 } 当基类有多个构造函数时,编译器根据派生类构造函数为基类构造函数提供的参数初始化列表中的参数类型来确定调用哪个构造函数。
派生类的析构函数应当首先对派生类新增普通成员进行清理
然后对派生类新增的对象成员进行清理
最后是对所有从C++类继承来的成员进行清理
创建一个派生类对象时,如果基类带有构造函数,则先调用基类的构造函数,然后调用派生类的构造函数;派生类对象被撤销时析构函数的调用次序刚好相反。