#include<iostream>
class base{
public:
base(){std::cout<<"In base";}
};
class dv1:virtual private base {
public:
dv1(){std::cout<<"In DV1";}
};
class dv2:virtual private base {
public:
dv2(){std::cout<<"In DV2";}
};
class drv : public dv1, public dv2 {
public:
drv() {std::cout<<"Why is this working";}
};
int main() {
drv obj;
return 0;
}
仮想継承の場合ではなく、コンストラクタを呼び出すのは、ほとんどの派生クラスの責任ですか? 注:ここでは、ベースは事実上、私的に継承されています。仮想継承でコンストラクタを呼び出すのは誰ですか?
のパラメータなしのコンストラクタの呼び出しを生成し、出力はあなたの何対何であるので、明示的に、その基底クラス(ES)のコンストラクタを呼び出していませんでした
drv
のあなたのコンストラクタ期待していた?あなたが何か違うものを期待していたなら、私はあなたに戻って、継承に関する章を再訪し、まずそれを理解しようと勧めます。 – Nim私はそれが基本的にコンパイルされないと予想しています。 – Learner