💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# C++ 中的继承 > 原文: [https://beginnersbook.com/2017/08/cpp-inheritance/](https://beginnersbook.com/2017/08/cpp-inheritance/) 继承是[面向对象编程系统(OOP)](https://beginnersbook.com/2017/08/cpp-oops-concepts/)的特性之一,它允许子类获取父类的属性(数据成员)和函数(成员函数)。 **什么是子类?** 继承另一个类的类称为子类,它也称为派生类。 **什么是父类?** 被其他类继承的类称为父类,超类或基类。 #### 继承语法 ```cpp class parent_class { //Body of parent class }; class child_class : access_modifier parent_class { //Body of child class }; ``` ## 在 C++编程中使用继承有什么好处 继承的主要优点是**代码可重用性**和**可读性**。当子类继承父类的属性和函数时,我们不需要在子类中再次编写相同的代码。这使得重用代码变得更容易,使我们编写更少的代码,代码变得更具可读性。 让我们来看一个**现实生活中的例子**来理解这一点:让我们假设`Human`是一个具有`height`,`weight`,`color`等属性的类,以及诸如`eat()`,`sleep()`,`dream()`,`work()`等函数。 现在我们要创建`Male`和`Female`类,这些类是不同的,但由于男性和女性都是人类,他们共享一些共同的属性和行为(函数),所以他们可以继承`Human`类,其余的那些属性和函数可以单独写在它们的类中。 这种方法使我们编写更少的代码,因为这两个类从基类继承了几个属性和函数,因此我们不需要重写它们。此外,这使得更容易阅读代码。 ## 继承示例 在我们讨论继承类型之前,让我们举个例子: 这里我们有两个类`Teacher`和`MathTeacher`,`MathTeacher`类继承了`Teacher`类,这意味着`Teacher`是一个父类,`MathTeacher`是一个子类。子类可以使用父类的属性`collegeName`。 > 另一个要注意的重点是,当我们创建子类的对象时,它调用子类的构造函数,子类构造函数自动调用基类的构造函数。 ```cpp #include <iostream> using namespace std; class Teacher { public: Teacher(){ cout<<"Hey Guys, I am a teacher"<<endl; } string collegeName = "Beginnersbook"; }; //This class inherits Teacher class class MathTeacher: public Teacher { public: MathTeacher(){ cout<<"I am a Math Teacher"<<endl; } string mainSub = "Math"; string name = "Negan"; }; int main() { MathTeacher obj; cout<<"Name: "<<obj.name<<endl; cout<<"College Name: "<<obj.collegeName<<endl; cout<<"Main Subject: "<<obj.mainSub<<endl; return 0; } ``` **输出:** ```cpp Hey Guys, I am a teacher I am a Math Teacher Name: Negan College Name: Beginnersbook Main Subject: Math ``` ## C++ 中的继承类型 1)单一继承 2)多级继承 3)多重继承 4)分层继承 5)混合继承 ### 单继承 在单继承中,一个类完全继承一个类。 例如:假设我们有`A`类和`B`类. ```cpp B inherits A ``` **单一继承的例子:** ```cpp #include <iostream> using namespace std; class A { public: A(){ cout<<"Constructor of A class"<<endl; } }; class B: public A { public: B(){ cout<<"Constructor of B class"; } }; int main() { //Creating object of class B B obj; return 0; } ``` 输出: ```cpp Constructor of A class Constructor of B class ``` ### 2)多级继承 在这种类型的继承中,一个类继承另一个子类。 ```cpp C inherits B and B inherits A ``` **多级继承示例:** ```cpp #include <iostream> using namespace std; class A { public: A(){ cout<<"Constructor of A class"<<endl; } }; class B: public A { public: B(){ cout<<"Constructor of B class"<<endl; } }; class C: public B { public: C(){ cout<<"Constructor of C class"<<endl; } }; int main() { //Creating object of class C C obj; return 0; } ``` 输出: ```cpp Constructor of A class Constructor of B class Constructor of C class ``` ### 多重继承 在多继承中,类可以继承多个类。这意味着在这种类型的继承中,单个子类可以具有多个父类。 例如: ```cpp C inherits A and B both ``` **多重继承的例子:** ```cpp #include <iostream> using namespace std; class A { public: A(){ cout<<"Constructor of A class"<<endl; } }; class B { public: B(){ cout<<"Constructor of B class"<<endl; } }; class C: public A, public B { public: C(){ cout<<"Constructor of C class"<<endl; } }; int main() { //Creating object of class C C obj; return 0; } ``` ```cpp Constructor of A class Constructor of B class Constructor of C class ``` ### 4)分层继承 在这种类型的继承中,一个父类具有多个子类。例如: ```cpp Class B and C inherits class A ``` **分层继承的例子:** ```cpp #include <iostream> using namespace std; class A { public: A(){ cout<<"Constructor of A class"<<endl; } }; class B: public A { public: B(){ cout<<"Constructor of B class"<<endl; } }; class C: public A{ public: C(){ cout<<"Constructor of C class"<<endl; } }; int main() { //Creating object of class C C obj; return 0; } ``` 输出: ```cpp Constructor of A class Constructor of C class ``` ### 5)混合继承 混合继承是多种继承类型的组合。例如,遵循多重和分层继承的子类和父类关系都可以称为混合继承。