C++语法09-派生类的概念

1. 派生类的声明

声明一个派生类的一般格式为:

1
2
3
Class 派生类名:[继承方式]  基类名{
派生类新增的数据成员和成员函数
};

如果不显示地给出继承方式关键字,系统默认为私有继承(private)。

2. 基类成员在派生类中的访问属性

派生类可以继承基类中除了构造函数与析构函数之外的成员,但是这些成员的访问属性在派生过程中是可以调整的。从基类继承来的成员在派生类中的访问属性是由继承方式控制的。

基类中的成员 在公有派生类中的访问属性 在私有派生类中的访问属性 在保护派生类中的访问属性
私有成员 不可直接访问 不可直接访问 不可直接访问
公有成员 公有 私有 保护
保护成员 保护 私有 保护

从上表中可以归纳出以下几点:

(1)基类中的私有成员

无论哪种继承方式,基类中的私有成员不允许派生类继承,即在派生类中是不可直接访问的

(2)基类中的公有成员

​ 当类的继承方式为公有继承时,基类中的所有公有成员在派生类中仍以公有成员的身份出现。

​ 当类的继承方式为私有继承时,基类中的所有公有成员在派生类中仍以私有成员的身份出现。

​ 当类的继承方式为保护继承时,基类中的所有公有成员在派生类中仍以保护成员的身份出现。

(3)基类中的保护成员

​ 当类的继承方式为公有继承时,基类中的所有保护成员在派生类中仍以保护成员的身份出现。

​ 当类的继承方式为私有继承时,基类中的所有保护成员在派生类中仍以私有成员的身份出现。

​ 当类的继承方式为保护继承时,基类中的所有保护成员在派生类中仍以保护成员的身份出现。

3. 派生类对基类成员的访问规则

派生类对基类成员的访问形式主要有以下两种:

(1)内部访问。由派生类中新增的成员函数对基类继承来的成员的访问

(2)对象访问。由派生类外部,通过派生类的对象对从基类继承来的成员的访问。

3.1 私有继承的访问规则

基类中的成员 私有成员 公有成员 保护成员
内部访问 不可访问 可访问 可访问
对象访问 不可访问 不可访问 不可访问

说明:

(1)基类中的私有成员在被私有继承时既不能被派生类的对象访问,也不能被派生类的成员函数访问,只能被基类自己的成员函数访问。因此,我们在设计积累时,总要为它的私有数据成员提供公有成员函数,如成员函数showx等,以便使派生类可以间接访问这些数据成员。

(2)经历了私有继承之后,所有基类的成员都成为了派生类的私有成员或不可直接访问的成员,如果进一步派生的话,基类的全部成员都无法在新的派生类中被访问。

3.2 公有继承的访问规则

基类中的成员 私有成员 公有成员 保护成员
内部访问 不可访问 可访问 可访问
对象访问 不可访问 可访问 不可访问

3.3 保护继承的访问规则

基类中的成员 私有成员 公有成员 保护成员
内部访问 不可访问 可访问 可访问
对象访问 不可访问 不可访问 不可访问
-------------The End-------------
0%