当前位置: 首页 > 网络知识

C++快速入门 第二十九讲:虚继承

时间:2026-01-29 09:25:40

通过虚继承某个基类,就是在告诉编译器:从当前这个类再派生出来的子类只能拥有那个基类的一个实例。

虚继承的语法:

1 class Teacher:virtual public Person 2 3

这样做的话便可以让Student和Teacher类都虚继承自Person类,编译器将确保从Student和Teacher类再派生出来的子类只能拥有一份Person类的属性。

实例:虚继承应用

1 #include <iostream> 2 #include <string> 3 //虚继承可以让Student和Teacher类都虚继承自Person类, 4 //编译器将确保从Student和Teacher类再派生出来的子类只能拥有一份Person类的属性。 5 using namespace std; 6 7 #include <string> 8 //人类 9 class Person 10 ; 17 Person::Person(string theName)//构造函数实现 18 21 void Person::introduce()//introduce()函数实现 22 25 26 //老师类继承于人类 27 class Teacher:virtual public Person//虚继承,再有类继承Teacher类时,将只拥有一份Person类的属性。 28 ; 37 Teacher::Teacher(string theName,string theClass):Person(theName)//老师的名字继承于人类中的名字 38 41 void Teacher::teach() 42 45 void Teacher::introduce() 46 49 50 //学生类继承于人类 51 class Student:virtual public Person//虚继承,再有类继承Student类时,将只拥有一份Person类的属性 52 ; 61 Student::Student(string theName,string theClass):Person(theName)//学生名字继承于人类中的名字 62 65 void Student::attendClass() 66 69 void Student::introduce() 70 73 74 //助教类既继承于老师类,又继承于学生类 75 class Assistant:public Teacher,public Student 76 ; 82 Assistant::Assistant(string theName,string classTeaching,string classAttending) 83 :Teacher(theName, classTeaching),Student(theName,classAttending),Person(theName) 84 //由于虚继承,Teacher和Student都不能拥有Person类中的属性和方法 85 //只能由Person类自己给出 86 89 void Assistant::introduce() 90 94 95 int main() 96


上一篇:C++快速入门 第三十七讲:高级强制类型转换
下一篇:C++快速入门 第四十七讲:容器和算法
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素