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&#x2B;&#x2B;
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图