4
#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;
}

仮想継承の場合ではなく、コンストラクターを呼び出すのはほとんどの派生クラスの責任ですか? 注: ここで base は仮想的かつプライベートに継承されます。

4

1 に答える 1

5

のコンストラクdrvターはその基本クラスのコンストラクターを明示的に呼び出していないため、コンパイラーは基本クラスのパラメーターなしのコンストラクターへの呼び出しを生成します

于 2011-01-05T10:47:25.083 に答える