[C/C++]多继承中的二义性

 

二义性

多继承的场景里,当父类中存在同名变量时,子类访问父类的同名变量,将出现二义性

因为编译器不知道你将要访问的是哪个父类中的变量。

 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大佬

    [C/C++]多继承中的二义性

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/338840

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午11:47
下一篇 2023年3月1日 下午11:48

相关推荐