计算世界之安生:C++继承的文水和智慧
继承在 C++ 中的定义主要通过以下格式实现:代码语言:javascriptAI代码解释class 子类名 : 继承方式 基类名 {// 子类的成员其中,继承方式 可以是public、protected 或 private,它们决定了基类的成员在派生类中的访问权限。public 继承:基类的 public 成员在派生类中保持 public,protected 成员保持 protected。
1.1 继承的概念
在C++中,继承(Inheritance) 是面向对象程序设计中的一种机制,它允许程序员在已有类(即基类或父类)的基础上,扩展或修改功能,从而形成新的类(即派生类或子类)。这种机制能够复用已有的代码,并且通过层次化的类结构,展示了面向对象编程由简单到复杂的认知过程。
举个例子,假设有一个基类 Person,定义了基本的个人信息,如姓名和年龄。现在需要创建一个 Student 类,除了拥有基本的个人信息外,还需要增加学号。通过继承,Student 类可以复用 Person 类中的代码,而不必重新编写这些属性。
代码语言:javascript
AI代码解释
class Person {
public:
void Print() {
cout << "name:" << _name << endl;
cout << "age:" << _age << endl;
}
protected:
string _name = "peter"; // 姓名
int _age = 18; // 年龄
};
// Student类继承自Person类
class Student : public Person {
protected:
int _stuid; // 学号
};
在以上代码中,Student 类继承了 Person 类的成员函数和成员变量,这意味着 Student 类中包含了 _name 和 _age 两个属性,以及 Print() 函数。通过继承,我们实现了代码的复用。
1.2 继承的定义
继承在 C++ 中的定义主要通过以下格式实现:
代码语言:javascript
AI代码解释
class 子类名 : 继承方式 基类名 {
// 子类的成员
};
其中,继承方式 可以是 public、protected 或 private,它们决定了基类的成员在派生类中的访问权限。
- public 继承:基类的 public 成员在派生类中保持 public,protected 成员保持 protected。
- protected 继承:基类的 public 成员在派生类中变为 protected,protected 成员保持 protected。
- private 继承:基类的 public 和 protected 成员在派生类中均变为 private。
具体示例如下:
代码语言:javascript
AI代码解释
class Teacher : public Person {
protected:
int _jobid; // 工号
};
int main() {
Student s;
Teacher t;
s.Print();
t.Print();
return 0;
}
在这个示例中,Student 和 Teacher 都继承了 Person 类的 Print() 函数,通过 s.Print() 和 t.Print() 可以分别输出 Student 和 Teacher 对象的姓名和年龄。
二. 继承中的访问权限
2.1 基类成员在派生类中的访问权限
基类的 public、protected 和 private 成员在派生类中的访问权限取决于继承方式。下面是不同继承方式下的访问权限表:

在这里插入图片描述从表中可以看出,基类的 private 成员在派生类中始终不可见(不可访问),无论采用何种继承方式。然而,基类的 protected 成员和 public 成员则根据继承方式在派生类中具有不同的访问级别。
更多推荐


所有评论(0)