c++ 类的虚拟继承

有一个基类:
class Animal
{
  public:
    Animal();
    void setWeight(float weight);
    float getWeight();
  private:
    float weight;
}

有两个Animal类的派生类:

class ma:public Animal
{
  public:
    ma();
    void run();
}

class lv:public Animal
{
  public:
    lv();
    void roar();
}

定义一个派生类 luozi 继承 ma 和 lv
class luozi: public ma,public lv
{
  public:
    luozi();
    void printStr();
}

当定义一个luozi类对象时:
luozi lz;
lz.setWeight(20);//错误:此时这个对象拥有两个Animal对象,编译器不知道为哪个对象赋值,此时应该将ma和lv继承Animal的方式改为public virtual(虚拟继承),这样lz对象就会拥有一个Animal对象
原文地址:https://www.cnblogs.com/handongdong/p/2223763.html