C++ 继承机制详解
1. 继承的概念及定义
1.1 继承的概念
在面向对象程序设计中,我们常需要模拟现实世界中的层级关系。例如,学生和老师都有姓名、年龄等共性,但又有各自的特性(如学号、职称)。如果每个类都重复定义这些共性信息,代码将变得冗余且难以维护。
C++ 的继承 (inheritance) 机制正是为了解决这个问题而设计的。它允许我们在保持原有类特性的基础上进行扩展,增加新的方法或属性,从而产生新的类。被继承的类称为基类(或父类),新产生的类称为派生类(或子类)。
核心意义:继承是面向对象编程中实现代码复用的最重要手段之一。它体现了由简单到复杂的认知过程,呈现了类层次的层次结构。
1.2 继承定义
1.2.1 定义格式
派生类的类名称后面加上冒号和继承方式,再跟基类名称。继承方式的符号与访问限定符一致,分为公有 (public)、保护 (protected)、私有 (private)。
class Derived : public Base {
// 派生类成员
};
1.2.2 继承基类成员访问方式的变化
基类成员在派生类中的访问权限取决于两个因素:基类成员的原始访问限定符和继承方式。
- 私有成员不可见:基类的
private成员在派生类中无论以什么方式继承都是不可见的。虽然它们物理上存在于派生类对象中,但语法上禁止直接访问。 - 保护成员的作用:如果基类成员不想在类外直接访问,但需要在派生类中访问,应定义为
protected。这是因继承才出现的限定符。 - 权限计算规则:基类其他成员在派生类的访问方式遵循
Min(成员在基类的访问限定符,继承方式)原则。权限大小上public > protected > private。 - 默认继承方式:使用关键字
class时默认继承方式是private,使用struct时默认是public。建议显式写出继承方式以便维护。 - 最佳实践:实际开发中一般使用
public继承。protected或private继承会限制成员的使用范围,降低扩展性和维护性,通常不提倡。
class Person {
public:
void Print() { cout << _name << endl; }
protected:
string _name;
private:
int _age;
};
class Student : public Person {
:
_stunum;
};


