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