1.继承的定义:在已有类的基础上创建新类的过程,一个 B 类继承A类,或称从类A派生类B,类 A 称为基类(父类),类B称为派生类(子类)
class派生类名:基类名表
{数据成员和成员函数声明};
基类类名表构成:
访问控制基类名
访问控制有三种{public:公有继承
private:私有继承
protected:保护继承
}
无论哪种类型都不能直接访问基类私有成员。至少定义为保护类型
生成派生类的过程吸收基类成员(构造和析构函数除外,不一定可见),改造基类成员根据派生类成员函数,覆盖基类)添加派生类新成员
重名成员:派生类中定义与基类同名成员,屏蔽基类成员,如在派生类中使用基类同名成员,显式地使用类名限定符 形式 类名:成员
基类初始化:在创建派生类对象时,用指定参数调用基类的构造函数,初始化派生类继承基类的数据。
形式 派生类构造函数 ( 变元表 ) : 基类 ( 变元表 ) , 对象成员1( 变元表).........;
构造函数顺序:基类 对象成员 派生类:基类可以定义一个无参的构造函数。
注:
派生类构造函数析构函数使用原则:基类的构造函数和析构函数不能被继承,如果基类没有定义构造函数或有无参的构造函数,派生类也可以不用定义构造函数,如果基类没有无参的构造函数,派生类必须定义构造函数,如果派生类的基类也是派生类,则每个派生类只负责最近的基类的构造,派生类是否定义析构函数与所属的基类无关
派生类析构函数执行顺序问题
(1)当派生类中不含对象成员时:构造函数的执行顺序是 基类 派生类;析构函数的执行顺序是 派生类→基类。
(2)当派生类中含有对象成员时:构造函数的执行顺序 基类→对象成员→派生类;析构函数的执行顺序 派生类→对象成员→基类。
小结:运用继承可以使代码更简便,使代码量减少。