オブジェクト指向プログラミングでは、仮想関数はポリモーフィックな動作の基礎です。しかし、仮想関数にデフォルトのパラメータを導入して新しいクラスを派生するとどうなるでしょうか?派生クラスはこれらのデフォルトを継承しますか?
デフォルトのパラメータと継承
一般的な考えに反して、仮想関数はデフォルトのパラメータをサポートします。ただし、これらのパラメーターは派生クラスには伝播されません。各派生クラスは、基本クラスから独立して、独自のデフォルト パラメーターのセットを維持します。
適用されるデフォルトの決定
仮想関数呼び出し中に適用されるデフォルト パラメーターは次のとおりです。呼び出されるオブジェクトの静的型によって決定されます。これは、次のことを意味します。
コンパイラの動作と推奨プラクティス
C 標準では上記の動作が規定されていますが、一部のコンパイラはこれを異なる方法で実装する場合があります。ただし、一般に次のことをお勧めします。
サンプル プログラム
この動作を実証するには、次のプログラムを検討してください。
struct Base { virtual string Speak(int n = 42); }; struct Der : public Base { string Speak(int n = 84); };
この例では:
このプログラムの出力は、使用されるデフォルトのパラメータがオブジェクトの静的型によって決定されることを明確に示しています。
結論
デフォルトのパラメーターを持つ仮想関数は C に柔軟性をもたらしますが、その継承のダイナミクスを理解することが重要です。推奨されるプラクティスに従うことで、アプリケーションで予測可能かつ保守可能なポリモーフィックな動作を確保できます。
以上が継承された仮想関数でデフォルトのパラメーターはどのように動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。