1

クラス図

現在、各子のコンストラクター内の図に示されているように、「たくさんのコード」があります。私の目標は、それを親のコンストラクターに移動することです。

4

2 に答える 2

10

抽象クラス コンストラクターから仮想メソッドを呼び出すことは可能ですか?

技術的には可能ですが、期待どおりに動作しないため、派生クラスの仮想テーブルがまだ構築されていないため、実行しないでください。

コンストラクターから仮想関数が呼び出されると、構築されるクラスの実装が呼び出されます。呼び出している仮想関数が純粋な場合、未定義の動作が発生します。

C++11 標準のパラグラフ 10.4/6 によると:

メンバ関数は、抽象クラスのコンストラクタ (またはデストラクタ) から呼び出すことができます。そのようなコンストラクタ (またはデストラクタ) から作成 (または破棄) されるオブジェクトに対して、直接的または間接的に純粋仮想関数への仮想呼び出し (10.3) を行うことの効果は定義されていません。

于 2013-05-05T10:08:06.707 に答える