„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum gibt es zwei Symbole für C++-Konstruktoren?

Warum gibt es zwei Symbole für C++-Konstruktoren?

Veröffentlicht am 18.11.2024
Durchsuche:217

Why Are There Two Symbols for C   Constructors?

Doppelte Symbole für C-Konstruktoren

Das Itanium C ABI gibt an, dass verstümmelte Namen von Konstruktoren Informationen über deren Typ und Parameter enthalten. Dementsprechend stammen die beiden in Bibliotheken beobachteten Konstruktoreinträge aus ihren unterschiedlichen Konstruktortypen:

  • Vollständiger Objektkonstruktor (C1): Dieser Konstruktor initialisiert das Objekt vollständig, einschließlich aller virtuellen Basisklassen .
  • Basisobjektkonstruktor (C2): Dieser Konstruktor initialisiert das Objekt selbst, zusammen mit Datenmitgliedern und nicht-virtuelle Basisklassen.

Doppelte Symbole und Fehler bei mehreren Definitionen

Obwohl es doppelte Einträge gibt, entstehen durch die Verwendung der keine widersprüchlichen Symboldefinitionen Suffixe C1 und C2. Der ABI stellt sicher, dass die verstümmelten Namen eindeutig sind, und bietet Compiler-Unterstützung für die unterschiedliche Behandlung dieser beiden Konstruktortypen.

Zusätzliche Details

  • In Ermangelung einer virtuellen Basis Klassen sind die vollständigen und Basisobjektkonstruktoren identisch und die Symbole können bei ausreichender Optimierung auf denselben Code verwiesen werden.
  • Die Notwendigkeit für duale Konstruktorsymbole besteht Dies ist in erster Linie auf die Unterstützung von Polymorphismus zurückzuführen, bei dem verschiedene Objekte unterschiedliche Basisklassen erben können, was eine spezielle Initialisierung erfordert.
  • Dieses Verhalten wurde früher in der C-Filter-Ausgabe angezeigt, ist aber nicht mehr enthalten.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3