C におけるダブルディスパッチとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > C におけるダブルディスパッチの意味・解説 

C++ におけるダブルディスパッチ

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/12/19 13:38 UTC 版)

ダブルディスパッチ」の記事における「C++ におけるダブルディスパッチ」の解説

上述問題は、Visitor パターン用いられているものと同様の手法解決できるSpaceShip と GiantSpaceShip がいずれも関数 virtual void CollideWith(Asteroid& inAsteroid) { inAsteroid.CollideWith(*this);} を持っているとすると、先ほどの例ではうまく動作しなかったが、以下の例はうまく動作するSpaceShip& theSpaceShipReference = theGiantSpaceShip;Asteroid& theAsteroidReference = theExplodingAsteroid;theSpaceShipReference.CollideWith(theAsteroid);theSpaceShipReference.CollideWith(theAsteroidReference); この例は、期待通りAsteroid hit a GiantSpaceShip および ExplodingAsteroid hit a GiantSpaceShipと表示する。 鍵はtheSpaceShipReference.CollideWith(theAsteroidReference); であり、 これはランタイム下記のような動作をする。 theSpaceShipReference は参照であり、C++vtable から正しメソッド探し出し、GiantSpaceShip::CollideWith(Asteroid&)を呼び出す。 GiantSpaceShip::CollideWith(Asteroid&) 内では、inAsteroid は参照であるため、inAsteroid.CollideWith(*this) はもう一つ仮想関数テーブル検索を行うことになる。この場合には、inAsteroid は ExplodingAsteroid への参照であり、ExplodingAsteroid::CollideWith(GiantSpaceShip&) が呼び出される

※この「C++ におけるダブルディスパッチ」の解説は、「ダブルディスパッチ」の解説の一部です。
「C++ におけるダブルディスパッチ」を含む「ダブルディスパッチ」の記事については、「ダブルディスパッチ」の概要を参照ください。

ウィキペディア小見出し辞書の「C におけるダブルディスパッチ」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「C におけるダブルディスパッチ」の関連用語

C におけるダブルディスパッチのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



C におけるダブルディスパッチのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのダブルディスパッチ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS