1.基类与派生类
(1)继承语法形式:
class 派生类名:基类名表
{
数据成员和成员函数声明
};
基类类名表构成:
访问控制 基类名
访问控制有三种{public:公有继承
private:私有继承
protected:保护继承
}
无论哪种类型都不能直接访问基类私有成员。
2.生成派生类的过程
(1)吸收基类成员(构造和析构函数除外,不一定可见)
(2)改造基类成员(根据派生类成员函数,覆盖基类)
(3)添加派生类新成员
3.重名成员
派生类中定义与基类同名成员,屏蔽基类成员,如在派生类中使用基类同名成员,显式地使用类名限定符
形式 类名:成员
4.基类初始化
在创建派生类对象时,用指定参数调用基类的构造函数,初始化派生类继承基类的数据。
形式 派生类构造函数 ( 变元表 ) : 基类 ( 变元表 ) , 对象成员1( 变元表 )…;
构造函数顺序:基类 对象成员 派生类
基类可以定义一个无参的构造函数。
注:
派生类构造函数析构函数使用原则:
(1)基类的构造函数和析构函数不能被继承
(2)如果基类没有定义构造函数或有无参的构造函数, 派生类也可以不用定义构造函数
(3)如果基类没有无参的构造函数,派生类必须定义构造函数
(4)如果派生类的基类也是派生类,则每个派生类只负责最近的基类的构造
(5)派生类是否定义析构函数与所属的基类无关
派生类析构函数执行顺序问题
(1)当派生类中不含对象成员时
构造函数的执行顺序是 基类 派生类;
析构函数的执行顺序是 派生类→基类。
(2)当派生类中含有对象成员时
构造函数的执行顺序 基类→对象成员→派生类;
析构函数的执行顺序 派生类→对象成员→基类;
总结
继承的使用可以简便程序,可以减少代码的重复书写,使用的关键在于正确的找出2个类或者几个类之间相同的部分,找到重复的内容作为一个基类来单独定义,在别的需要用到这个功能的地方直接调用,避免多次书写。多继承不建议使用。