Heim > Backend-Entwicklung > C++ > Warum gibt es zwei Symbole für C-Konstruktoren?

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

Linda Hamilton
Freigeben: 2024-11-24 02:41:09
Original
278 Leute haben es durchsucht

Why Are There Two Symbols for C   Constructors?

Doppelte Symbole für C-Konstruktoren

Das Itanium C ABI legt fest, 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 mehrere Definitionsfehler

Trotz doppelter Einträge entstehen durch die Verwendung von keine widersprüchlichen Symboldefinitionen die 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 von Dual Konstruktorsymbole basieren in erster Linie auf der Unterstützung von Polymorphismus, 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.

Das obige ist der detaillierte Inhalt vonWarum gibt es zwei Symbole für C-Konstruktoren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage