MGE*_*MGE 1 c++ virtual inheritance
有什么区别
Class A {};
Class Z: public A {};
Run Code Online (Sandbox Code Playgroud)
和
Class A {};
Class Z: virtual public A{};
Run Code Online (Sandbox Code Playgroud)
假设没有额外的继承层次结构,在这种情况下没有区别.查看差异的唯一方法是通过多种方式继承同一个类 - 例如,如下所示:
class ZA : public Z, public A {};
Run Code Online (Sandbox Code Playgroud)
与
class ZA : virtual public Z, virtual public A {};
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,ZA将有两个区域具有单独的As - 一个直接继承,一个继承通过Z.在第二种情况下,只有一个A,通过两个路径继承,并共享.
这是一个例子:
