背景:c++允许多继承 注意:尽量避免多继承
继承会继承父类的所有属性(暂不考虑私有属性)
这样就会出现菱形继承的情况
即基类的属性 两个父类继承 最终子类拥有两个父类相同的基类属性 这样无法区分(可以利用作用域,但是还是出现了资源浪费的情况,和本不该出现两个相同的属性)
利用virtual关键字解决该问题
#include <iostream>
using namespace std;
class Animal
{
public:
int m_Age;
};
class Sheep:virtual public Animal
{
};
class Cat :virtual public Animal
{
};
class Godv :public Sheep, public Cat
{
};
void test()
{
Godv gg;
gg.m_Age = 10;
}
int main()
{
test();
return 0;
}