二义性
在多继承的场景里,当父类中存在同名变量时,子类访问父类的同名变量,将出现二义性
因为编译器不知道你将要访问的是哪个父类中的变量。
1 class A 2 { 3 public: 4 int x; 5 }; 6 class B:public A 7 { 8 }; 9 class C:public A 10 { 11 }; 12 class D:public B, public C 13 { 14 }; 15 int main() 16 { 17 D a; 18 a.x=10; //存在二义性 19 return 0; 20 }
虚继承
虚继承只能解决多个父类的同名变量都是从公共基类中继承而来的情况
基类:A | ||
↙ | ↘ | |
父类:B | 父类:C | |
↘ | ↙ | |
子类:D |
1 class A 2 { 3 public: 4 int x; 5 }; 6 class Bicycle:virtual public B //虚继承 7 { 8 }; 9 class Motocar:virtual public C //虚继承 10 { 11 }; 12 class D:public B,public C 13 { 14 }; 15 int main() 16 { 17 Motocycle a; 18 a.x=10; 19 return 0; 20 }
原文链接: https://www.cnblogs.com/FuroOuO/p/12599893.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/338840
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!