目录
一、什么是菱形继承
C++继承允许多继承,即一次继承多个父类,而菱形继承是多继承的一种特殊情况。示意图如下:

二、菱形继承存在的问题
假设Person类有一个成员变量_age,Student类的对象中包含了这个 _age 成员,Teacher类的对象中也包含了 _age 成员,但是 Assistant 类依次继承了 Student 和 Teacher类,不考虑其他成员,就最终结果而言,Assistant类中确实包含了两份 _age 成员。
这就导致了菱形继承的 冗余性 和 二义性。
- 冗余性:存在重复的数据,比如_age 要存两份
- 二义性:如果要访问 _age 成员,是访问 Student 类的 _age,还是访问 Teacher类的_age


本文介绍了C++中菱形继承的问题及虚拟继承的解决方案,包括冗余性和二义性的解决办法,并解释了虚基表的概念及其应用。
最低0.47元/天 解锁文章
7156

被折叠的 条评论
为什么被折叠?



