8.1 继承的基本概念
类的继承是在现有类的基础之上,创建新类的机制。
称现有的类为基类,新建立的类为派生类。也可以表述为“父类—子类”或者“超类—子类”。
8.2 定义基类和派生类
8.2.1 简单的继承和派生
•派生类继承了基类的所有成员,派生类对象包含基类的数据成员,也可以直接调用基类公有函数。
•派生类对象不可以直接访问基类的私有成员。
•派生类对象可以通过基类的公有函数访问基类的私有成员。
8.2.2 定义派生类
派生类定义的语法格式是
class 派生类名 : 继承方式 基类1, 继承方式 基类2,…,继承方式 基类n
{
派生类成员声明;
};
“继承方式”是 public、protected 和 private 三者之一。选择不同的继承方式,会影响基类成员在派生类中的访问控制属性。
派生类继承了基类中的所有成员,但不包括构造函数、析构函数和默认赋值运算符。
8.2.3 继承方式和访问控制
不同继承方式决定的不同访问控制权限体现在:
(1)派生类的成员函数对其继承的基类成员的访问控制:无论是哪一种继承方式,派生类成员函数都可以访问基类的 public 成员和 protected 成员,但都不能访问基类的 private 成员。
(2)其它模块通过派生类对象对其继承的基类成员的访问控制:只有 public 继承的派生类的对象可以访问基类 public 成员,protected 和 private 继承的派生类对象不能访问基类的 public 成员。
1. 公有继承
公有继承的派生类定义形式:
class 派生类名:public 基类名
{
派生类新成员定义;
};
基类成员在派生类中的访问属性不变。
派生类的成员函数可以访问基类的公有成员和保护成员,不能访问基类的私有成员。
派生类以外的其它函数可以通过派生类的对象,访问从基类继承的公有成员, 但不能访问从基类继承的保护成员和私有成员。

2. 私有继承
私有继承的派生类定义形式:
class 派生类名:private 基类名
{
派生类新成员定义;
};
基类成员在派生类中的访问属性都变成 private。
派生类的成员函数可以访问基类的公有成员和保护成员,不能访问基类的私有成员;
派生类以外的其它函数不能通过派生类的对象,访问从基类继承的任何成员。

私有继承和保护继承的区别

继承方式影响访问属性
