次の行では、クラスAはクラスBとCによって継承される基本クラスです。 クラスDはBとCの両方から継承します。さらに、DのコンストラクタはB、C、Aのコンストラクタを呼び出します BとCが仮想としてAを継承するとき、Aのコンストラクタを直接呼び出すことはできません(同じ世代への呼び出しは3世代を通して行われる必要があるため)。C++複数の継承コンストラクタを呼び出す
私はクラスBのオブジェクトを作成する場合、Aは事実上継承されているので、とにかくAのコンストラクタを呼び出す(初期化に使用する変数v1とv2を渡す)のはありますか?
class A {
int a1,a2;
A() {
}
A(int v1,v2) {
a1 = v1;
a2 = v2;
}
};
class B:virtual public A {
int b1,b2;
B() {
}
B(int v1,v2) {
b1 = v1;
b2 = v2;
}
};
class C:virtual public A {
int c1,c2;
C() {
}
C(int v1,v2) {
c1 = v1;
c2 = v2;
}
};
class D:public B,public C {
int d1,d2;
D() {
}
D(int v1,v2):B(v1,v2),C(v1,v2),A(v1,v2)
{
d1 = v1;
d2 = v2;
}
};