单继承
class 派生类名:继承方式 基类
{
成员声明;
}
多继承
class 派生类名:继承方式 基类1,继承方式 基类2 ,...
{
成员声明;
}
公有继承
基类的public和protected成员的访问属性在派生类忠保持不变,基类的private成员不可访问。
派生类中的成员函数可以直接访问基类忠的public和protected成员,但不能访问基类的private成员。
通过派生类的对象只能访问基类的public成员。
私有继承
基类的public和protected成员都以private身份出现在派生类中,但基类的private成员不可访问。
派生类中的成员函数可以直接访问基类忠的public和protected成员,但不能访问基类的private成员。
通过派生类的对象不能访问基类中的任何成员。
保护继承
基类的public和protected成员都以protected身份出现在派生类中,但基类的private成员不可访问。
派生类中的成员函数可以直接访问基类忠的public和protected成员,但不能访问基类的private成员。
通过派生类的对象不能访问基类中的任何成员。
protected 成员特点:
在建立其所在类对象的模块来说,它与private成员的性质相同。
对其派生类来说,它与public成员的性质相同。
即实现了数据隐藏,又方便继承,实现了代码重用。
继承是的构造函数
基类的构造函数不被继承,需要在派生类中自行声明。
声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化由基类完成。
派生类对象的初始化过程,首先自动调用每个基类的构造函数来初始化相关的基类对象,然后再执行子类的构造函数。
单一继承的构造函数
派生类名::派生类名 (基类形参,本类形参):基类名(参数)
{
//本类成员初始化赋值
}
多继承的构造函数
派生类名::派生类名 (基类1形参,基类2形参,基类3形参,....本类形参):基类名1(参数),基类名2(参数)基类名3(参数)
{
//本类成员初始化赋值
}
派生类与基类的构造函数
当基类中声明有缺省形式的构造函数或未声明构造函数时,派生类构造函数的声明中可以省略对基类构造函数的调用。
若基类中未声明构造函数,派生类中也可以不声明,全采用缺省形式的构造函数。
当基类声明有带形参的构造函数时,派生类也应声明带的构造函数,提供将参数传递给基类构造函数的途径。