したがって、親クラスのコンストラクタを呼び出す通常の方法は、初期化リストにあります:C++は、初期化リストの外で親コンストラクタを明示的に呼び出します
#include <cstdio>
struct Parent {
explicit Parent(int a) {
printf("Parent -- int\n");
}
};
struct Child : public Parent {
explicit Child(int a) : Parent(1) {
printf("Child -- int\n");
}
};
int main(int argc, char **argv) {
Child c = Child(10);
};
プリントParent -- int
その後、Child -- int
。
(どちらかというと)それは良い考えであるかどうかにかかわらず、初期化リストの外で(構築されているオブジェクト上の)コンストラクタの本体で親コンストラクタを明示的に呼び出すことができるかどうかは疑問です。
私は迷惑なことを言うだろうし、なぜあなたはこれをやりたいのですか? –
@NirFriedman私はしたくないし、行っていない。私は可能かどうか疑問に思います*。 C++のコンストラクタは、私が使用した他の言語(例えば、継承されない、無意味なコンストラクタが暗黙的に呼び出される、明示的に...など)と比較して、奇妙な動作をします。私は言語の境界についてより良い感じを得ようとしています。 –
"*親クラスのコンストラクタを呼び出す通常の方法は初期化リストにあります*" - これは単に普通の方法ではなく、それだけです。 –