Mit welchen zwei Methoden wird die dynamische Bindung in OO-Sprachen implementiert? Wie ist die dynamische Bindung für eine reine OOL wie Smalltalk im Vergleich zu gemischten OOL wie als C++ implementiert?Dynamische Bindungsimplementierungen in OO-Sprachen
Antwort
Ich weiß nicht, ob es zwei Möglichkeiten gibt, und ich weiß nicht, ob es reine vs. gemischte OO-Sprachen ist.
Grundsätzlich verwendet C++ virtuelle Tabelle Dispatch - jede Instanz trägt eine Tabelle von Funktionen (im Falle von C++, trägt er einen Zeiger auf die Tabelle, aber das spielt keine Rolle im Dispatch-Mechanismus), und wenn Sie Call x.my_method()
, der Compiler kennt seine zB. die zweite Methode eines Objekts, also gibt es Code aus, um zu dem zweiten Zeiger in der virtuellen Methodentabelle zu springen.
In dynamischen Sprachen (und ObjC), ist es in der Regel gelöst durch ein Wörterbuch der Methoden irgendwo, wo zur Laufzeit der Name my_method
nachgeschlagen wird und welche Funktion gefunden wird, ausgeführt wird.
Es gibt gemischte Ansätze - in COM, schauen Sie die Schnittstelle nach Identifikator; dann führen Sie eine Methode von ihrer vtable aus.
Manchmal wird Code wie eine switch-Anweisung (z. B. Schalter abhängig vom Typ eines Objekts) generiert, um den zweiten Ansatz zu beschleunigen.
- 1. Dynamische Regex in Ruby
- 2. Dynamische URLs in Laravel?
- 3. Dynamische Klassenerstellung in C#
- 4. dynamische regex in R
- 5. Dynamische String in WPF
- 6. Dynamische Auswahl in LINQ
- 7. Dynamische Vererbung in Python
- 8. Dynamische TypeOf in C#
- 9. Dynamische Tabellenpartitionierung in Postgres
- 10. Dynamische Dateinamen in vars_files
- 11. Schlüssel dynamische in config.yml
- 12. Dynamische Datenbindung in AngularJS
- 13. dynamische Direktiven in angularjs
- 14. Dynamische Zellbereiche in Formel
- 15. dynamische var in LinQ
- 16. Dynamische Bereiche in Excel
- 17. Dynamische Feldauswahl in odoo
- 18. dynamische Hinzufügen in JavaScript
- 19. Dynamische Vorlagen in Django
- 20. Dynamische Datenstrukturen in C#
- 21. Dynamische Variablen in Perl
- 22. Dynamische Funktionsname in PHP
- 23. Dynamische Daten in C++
- 24. dynamische Schleife in R
- 25. Dynamische Interpolation in Angular2
- 26. Dynamische Annotation in SVG
- 27. dynamische Teilzeichenfolge in C#
- 28. Dynamische Referenz in vlookup
- 29. dynamische Filterzeilen in R
- 30. Dynamische FFI in Go