仮想関数アクセスのための C での継承とオブジェクトの初期化を理解する
C では、継承によりプロパティと動作を継承する派生クラスを作成できます。基本クラスから。ただし、C でのオブジェクトの初期化順序は、仮想関数の動作に影響を与える可能性があります。
質問:
仮想関数を持つ基本クラスを使用してオブジェクトが C で構築される場合関数、その関数がなぜ動作するのか
答え:
ここでの重要な概念は、基本クラスと派生クラスの初期化の順序です。 C では、基底クラスは派生クラスの前に構築されます。
説明:
提供された例:
この動作を修正するには:
派生クラスの value() 関数がオブジェクトの構築中に呼び出される場合は、派生クラスのアドレスを使用して基本クラスを明示的に初期化する必要があります。インスタンス:
derived example; base(&example).value()
派生オブジェクトのアドレスを渡すことにより、派生オブジェクトの value() 関数を呼び出すように基本コンストラクターに指示し、オブジェクトを完全な派生形式に効果的に「成熟」させます。
以上がC オブジェクトの初期化中に仮想関数が予期しない動作をするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。