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. OO Haskellでのインターフェイスの実装
- 6. 動的タイピング言語のドキュメント
- 7. ミニ言語の実装方法は?
- 8. MVC3の多言語実装剃毛
- 9. buddypressでの多言語実装
- 10. MPS:abstract(generatorless?)言語とその実装
- 11. Madgwick 2010 AHRSのC言語実装
- 12. アセンブリ言語命令の実装
- 13. 機能的な言語でESB(Enterprise Service Bus)を実装する
- 14. クイックソートを機能的言語で実装する
- 15. 実装R言語でTwitterでサインイン
- 16. モバイルで言語を実装する
- 17. IOCコンテナと動的言語
- 18. リダイレクト動的言語スラッグ
- 19. 多言語ストア - カスタムメニューの言語を動的に変更する
- 20. インタプリタの実装言語にインタプリタ言語が適していますか?
- 21. ノックアウトJS宣言的バインディングの内部的な動作
- 22. 非oo言語用のプロトタイプユニットテストフレームワークとは何ですか?
- 23. OO言語固有のInversion of Controlですか?
- 24. C言語の動的配列ベクトル
- 25. AngularJSの動的言語選択
- 26. IronRuby /動的言語ランタイム用のネットワーククラスローダ?
- 27. 宣言的言語のXSLT
- 28. 動的バインディングはどのようにJavaで実装されていますか?
- 29. OO言語に実際にPROTECTEDアクセス修飾語が必要なのはなぜですか?
- 30. RMIの動的プロキシスタブ実装