多继承,是指一个子类,继承了两个不同的父类。若这俩个不同的父类,又继承自同一个爷爷类,那么就形成了所谓的 菱形继承。
像上面这种继承关系的例子,在实际使用中,一个人不会用两个姓氏。但其实上确实是拷贝了两份同名变量,所以会有歧义。
在现实意义中,类内的两个同名变量的用处不大,如果换个例子,当爷爷类是家具,有个成员变量表示材料。两个子类分别是沙发和床,然后有一个沙发床多继承自沙发还有床,那这个沙发床无论是继承自谁,永远也支持一种材料(来自爷爷的隔代继承)
当出现菱形继承时,为了避免出现歧义,爸爸类要声明为虚继承,这样孙子类的变量就只有一份,来自爷爷类。
虚继承的作用,只有一个:防止孙子类(多继承)继承的成员变量,会拷贝多份。
#include#include #include using namespace std; class yeye { public: yeye() { cout<<"yeye()....."< m_a< m_a<



