虚拟继承中是否存在多重继承?

Is there Multiple inheritance in Virtual inheritance?

本文关键字:多重继承 存在 是否 继承 虚拟      更新时间:2023-10-16

如果虚拟继承直接继承了两个类,那么只有第一个类被虚拟继承继承了吗?二是普通传承之道?

class Student : virtual public Person, virtual public Woman;

这样的代码存在吗?

如果存在,是否只有第一个类(学生(被虚拟继承继承?第二个(老师(是普通传承之道?

多重继承意味着一个类具有多个直接基类。 句号。

class Student: public Person, public Woman { }; // multiple inheritance -- two direct bases

任何基类都可以虚拟继承:

class Student: public virtual Person { }; // virtual inheritance

如果多重继承符合您的设计,则可以将其与虚拟继承结合使用:

class Student: public virtual Person, public Woman { };
class Student: public Person, public virtual Woman { };
class Student: public virtual Person, public virtual Woman { };

virtual继承表明,无论虚拟基数用作基数多少次,都只能有一个虚拟基数实例:

class base { };
class der1 : public virtual base { }; // one base subobject
class der2 : public virtual base { }; // one base subobject
class top: public der1, public der2 { } ; // one base subobject

如果它不是虚拟的,你会得到多个相同类型的子对象:

class base { };
class der1 : public base { }; // one base subobject
class der2 : public base { }; // one base subobject
class top : public der1, public der2 { }; // two base subobjects, one each from der1 and der2