【发布时间】:2017-10-28 13:23:51
【问题描述】:
#include<iostream>
using namespace std;
int main(){
class c1{
public:
int i;
};
class c2:virtual public c1{
public:
int j;
};
class c3:public c1{
public:
int k;
};
class c4:public c2,public c3{
};
c4 inst1; //Its an error which indicates multiple base classes have beeen inherited
inst1.i=34;
}
我的书说
普通基类和虚拟基类之间的唯一区别是 当一个对象多次继承基础时会发生什么。如果 使用虚拟基类,则只有一个基类存在于 物体。否则会找到多个副本。
但是在这个程序中,即使其中一个基类被继承为虚拟,为什么会有两个副本?
【问题讨论】:
-
它也许应该说“当一个对象虚拟地多次继承基础”。这不是这里发生的事情。
-
@BoPersson 我认为你的评论有帮助
-
因为它实际上不是两次都继承。
标签: c++ inheritance