C++ 继承机制详解
继承是面向对象程序设计中最核心的复用手段之一。它允许我们在已有类的基础上扩展功能,生成新的派生类。这种机制不仅提高了代码的复用性,还构建了清晰的层次结构。
一、继承的概念与定义
在继承体系中,原有的类称为基类(父类),新产生的类称为派生类(子类)。通过继承,我们可以将公共的成员变量和函数提取出来,避免重复代码。
1.1 基本示例
假设我们有一个学生和一个老师,他们都有姓名、年龄等属性。如果不使用继承,这些属性需要在两个类中分别定义,造成冗余。使用继承后,可以创建一个 Person 基类,Student 和 Teacher 继承自 Person。
class Person {
public:
void identity() { /* 身份认证逻辑 */ }
protected:
string _name = "peter";
int _age = 18;
};
class Student : public Person {
public:
void study() { /* 学习逻辑 */ }
protected:
int _stuid;
};
class Teacher : public Person {
public:
void teaching() { /* 授课逻辑 */ }
protected:
string _title;
};
1.2 继承方式与访问权限
C++ 支持三种继承方式:public、protected、private。它们决定了基类成员在派生类中的可见性。
- public 继承:基类的 public/protected 成员在派生类中保持原有访问级别。
- protected 继承:基类的 public/protected 成员在派生类中变为 protected。
- private 继承:基类的 public/protected 成员在派生类中变为 private。
注意:基类的 private 成员无论以何种方式继承,在派生类中都是不可见的(虽然物理上存在于对象内存中,但无法直接访问)。
实际开发中,绝大多数情况使用 public 继承。使用 class 关键字时默认继承方式为 private,struct 默认为 public,建议显式写出继承方式以避免歧义。


