OO言語で動的バインディングを実装するために使用される2つの方法は何ですか? Smalltalkのような純粋なOOLとOOLの混合のために動的バインディングが実装されているように、 はC++と同じですか?OO言語の動的バインディング実装
0
A
答えて
1
私は2つの方法があるかどうかわかりません。純粋なものか、混在しているものかはわかりません。
基本的に、C++は仮想テーブルディスパッチを使用します - 各インスタンスは関数のテーブルを持ちます(C++の場合はテーブルへのポインタを持ちますが、ディスパッチメカニズムでは何の役割も果たしません)。 x.my_method()
を呼び出すと、コンパイラはそれを知っています。オブジェクトの2番目のメソッドであるため、仮想メソッドテーブルの2番目のポインタにジャンプするコードを生成します。
動的言語(およびObjC)では、通常、実行時にmy_method
という名前が検索され、見つかった関数が実行されるメソッド辞書がどこかで解決されます。
さまざまなアプローチがあります.COMでは、インターフェイスを検索エンジンで検索します。そのvtableからメソッドを実行します。
時には、2番目のアプローチを高速化するために、switch文のようなコード(たとえば、オブジェクトの種類に応じてswitch)が生成されることがあります。
関連する問題
- 1. 実装言語の選択
- 2. DのMySQL言語バインディング?
- 3. PHP OO再試行ロジックの実装と動的メソッドとargsの受け渡し
- 4. JSFの言語スイッチャーの実装
- 5. 動的タイピング言語のドキュメント
- 6. buddypressでの多言語実装
- 7. MVC3の多言語実装剃毛
- 8. ミニ言語の実装方法は?
- 9. アセンブリ言語命令の実装
- 10. クイックソートを機能的言語で実装する
- 11. 機能的な言語でESB(Enterprise Service Bus)を実装する
- 12. OO Haskellでのインターフェイスの実装
- 13. IOCコンテナと動的言語
- 14. モバイルで言語を実装する
- 15. 多言語ストア - カスタムメニューの言語を動的に変更する
- 16. インタプリタの実装言語にインタプリタ言語が適していますか?
- 17. IronRuby /動的言語ランタイム用のネットワーククラスローダ?
- 18. 非oo言語用のプロトタイプユニットテストフレームワークとは何ですか?
- 19. OO言語固有のInversion of Controlですか?
- 20. 宣言的言語のXSLT
- 21. RMIの動的プロキシスタブ実装
- 22. 動的JListの実装
- 23. 動的バインディングはどのようにJavaで実装されていますか?
- 24. Webアプリケーションのテンソル分解を実装する最も効率的な言語
- 25. C++と一時バインディングの問題へのconst参照(C言語の0XでD言語の値渡しと参照ルールの実装)
- 26. OO言語に実際にPROTECTEDアクセス修飾語が必要なのはなぜですか?
- 27. 動的HTML料金設定ページ言語
- 28. 少ない - 動的なスタイルシート言語?
- 29. LESS(動的スタイルシート言語)とリソースローダー
- 30. 英語とその他の言語用のASP.NET動的ローカライゼーション