#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;
}
私の本は、通常の基底クラスと仮想1の唯一の違いは、オブジェクトがベース回以上継承したときに発生するものである 基本クラスが仮想クラスとして継承されていても、基本クラスが2回継承されるのはなぜですか?
言います。 仮想基本クラスが使用されている場合、オブジェクトは に1つのみの基本クラスが存在します。それ以外の場合は、複数のコピーが検出されます。
しかし、このプログラムでは、基本クラスの1つが仮想として継承されていても、なぜ2つのコピーがありますか?
を*「オブジェクトは、基本を継承するとき**事実**回以上」*。それはここで何が起こるかではありません。 –
@BoPersson私はあなたの意見が助けたと思う。 – rimiro
それは事実上両方の時代に継承されないだろう。 – EJP