5.0 C++远征:虚继承

6-1虚继承

1.为什么引入虚继承?

问题:

                                  A

                              /	       \

                          /		           \

                        B        Is-a          C

                        \		           /

                            \	       /

                                  D

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

解决办法:

引入虚继承。

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

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

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

class D : public B, public C {
  
};

posted @ 2016-11-18 11:30  青_阳  阅读(96)  评论(0编辑  收藏  举报