当前位置:
k262电脑网 >
网络知识 > 发布时间:2025-06-17 09:32 文章来源于网友投稿,仅供参考!
C++快速入门 第二十九讲:虚继承
通过虚继承某个基类,就是在告诉编译器:从当前这个类再派生出来的子类只能拥有那个基类的一个实例。
虚继承的语法:
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++快速入门 第十一讲:结构
C/C++