5.0 C++远征:虚继承

6-1虚继承

1.为什么引入虚继承?

问题:

                                    A

                              /         \

                          /                  \

                         B         Is-a        C

                          \                 /

                              \         /

                                    D

当发生菱形继承时,在实例化D的时候,会产生两份A的数据,形成数据冗余。

2.解决办法:

引入虚继承。

即B和C在继承A的时候采用虚继承的方式:

class B : virtual public A {
  
};
class C : virtual public A {
  
};

那么D在继承B和C的时候即可直接继承:

class D : public B, public C {
  
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容