美文网首页C/C++学习笔记
5.0 C++远征:虚继承

5.0 C++远征:虚继承

作者: 青_阳 | 来源:发表于2016-11-18 18:30 被阅读14次

    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 {
      
    };
    

    相关文章

      网友评论

        本文标题:5.0 C++远征:虚继承

        本文链接:https://www.haomeiwen.com/subject/deqspttx.html