現在、各子のコンストラクター内の図に示されているように、「たくさんのコード」があります。私の目標は、それを親のコンストラクターに移動することです。
2 に答える
10
抽象クラス コンストラクターから仮想メソッドを呼び出すことは可能ですか?
技術的には可能ですが、期待どおりに動作しないため、派生クラスの仮想テーブルがまだ構築されていないため、実行しないでください。
コンストラクターから仮想関数が呼び出されると、構築されるクラスの実装が呼び出されます。呼び出している仮想関数が純粋な場合、未定義の動作が発生します。
C++11 標準のパラグラフ 10.4/6 によると:
メンバ関数は、抽象クラスのコンストラクタ (またはデストラクタ) から呼び出すことができます。そのようなコンストラクタ (またはデストラクタ) から作成 (または破棄) されるオブジェクトに対して、直接的または間接的に純粋仮想関数への仮想呼び出し (10.3) を行うことの効果は定義されていません。
于 2013-05-05T10:08:06.707 に答える