クラスBをクラスAに拡張してその関数をオーバーライドすると、(B *)のインスタンスを型(A *)のように送信するときに、クラスBで作成したオーバーライドを呼び出すことができますか?クラスインスタンスが送信されたときにオーバーライドされた型であるかのようにオーバーライドされますか?
1
A
答えて
4
A
のメソッドが仮想として定義されている限り、これはポインタと参照の両方に当てはまります。例えば、
class A {
virtual void Method() {
cout << "A::Method" << endl;
}
};
class B {
// "virtual" is optional on the derived method although some
// developers add it for clarity
virtual void Method() {
cout << "B::Method" << endl;
}
};
void Example1(A* param) {
param->Method();
}
void Example2(A& param) {
param.Method();
}
void main() {
B b;
Example1(&b); // Prints B::Method
Example2(b); // Prints B::Method
}
3
はい、機能がvirtual
宣言されている場合 - A内の関数がvirtual
宣言されている場合のみhttp://www.parashift.com/c++-faq-lite/virtual-functions.html
2
を参照してください。 virtual
と宣言すると、親クラスとしてキャストされていても、オーバーライドされた子関数が呼び出されます。
関連する問題
- 1. オーバーライドされたCSSプロパティがキャンセルされたか、またはオーバーライドされましたか?
- 2. sass変数が1つのファイルにコンパイルされたときにオーバーライドされる
- 3. スーパークラスではオーバーライドされますが、サブクラスではオーバーライドされませんか?
- 4. カスタムPage_ClientValidateは、updatepanelが使用されたときにオーバーライドされます。
- 5. JavaDocでオーバーライドされたメソッド
- 6. スーパークラスのオーバーライドされたプロパティ
- 7. フレックスモジュールのオーバーライドされたスタイル
- 8. オーバーライドされたメソッドカントスロー例外
- 9. serializable_hash superは、オーバーライドされたメソッドで定義されたオプションをどのように取得しますか?
- 10. オーバーライドされたメソッドの戻り値の型を変更するにはどうすればよいですか?
- 11. この `/ error`エンドポイントはどのようにオーバーライドされますか?
- 12. C#からオーバーライドされオーバーロードされたF#メソッドを解決できません
- 13. Javascript HMTL、onclickイベントは、ボタンをクリックしたときに送信されますが、キーボードで入力が押されたときは送信されませんか?
- 14. HWND_BROADCASTに送信されたメッセージは他のデスクトップに送信されますか?
- 15. 解放されたインスタンスに送信されたメッセージ... @合成中に送信されましたか?
- 16. メソッドはStringBufferとStringBuilderでオーバーライドされませんでしたか?
- 17. 間違ったオーバーライドが呼び出されましたか?
- 18. 電子メールクライアントから送信された音声や画像はどのように送信されますか?
- 19. ページがロードされたときにフォームが送信されます
- 20. 解放されたインスタンスにメッセージが送信されました
- 21. オーバーロードされたオーバーライドされたメソッドを呼び出す方法
- 22. CakePHPのフィールド型マッピングによって生成されたSQLをオーバーライドする
- 23. フォームが送信されたかどうかはどのように確認されますか?
- 24. Doxygen - オーバーライドされたメソッド - コメントは継承されません、なぜですか?
- 25. MVCで生成されたリンクをオーバーライド
- 26. 複数のメッセージが1つだけ送信されたときにコンテンツページに受信されますか?
- 27. オーバーライドされたメソッドを呼び出すと、オーバーライドされた呼び出しメソッドのスーパークラス
- 28. パケットが定期的に送信されたときにスタックされる
- 29. ScalaのオーバーロードされたvargsメソッドによるJavaインターフェイスのオーバーライド
- 30. ウィンドウが表示されたときにメッセージが送信される