一、菱形继承
在介绍虚继承之前介绍一下菱形继承
概念:A作为基类,B和C都继承与A。最后一个类D又继承于B和C,这样形式的继承称为菱形继承
菱形继承的缺点:
数据冗余:在D中会保存两份A的内容
访问不明确(二义性):因为D不知道是以B为中介去访问A还是以C为中介去访问A,因此在访问某些成员的时候会发生二义性
缺点的解决:
数据冗余:通过下面“虚继承”技术来解决(见下)
访问不明确(二义性):通过作用域访问符::来明确调用。虚继承也可以解决这个问题
演示案例
class A{public:A(int a) :m_a(a) {}int getMa() { return m_a; }private:int m_a;};class B :public A{public