Maison > développement back-end > C++ > Pourquoi y a-t-il deux symboles pour les constructeurs C ?

Pourquoi y a-t-il deux symboles pour les constructeurs C ?

Linda Hamilton
Libérer: 2024-11-24 02:41:09
original
322 Les gens l'ont consulté

Why Are There Two Symbols for C   Constructors?

Symboles doubles pour les constructeurs C

L'ABI Itanium C spécifie que les noms mutilés des constructeurs incluent des informations sur leur type et leurs paramètres. En conséquence, les deux entrées de constructeur observées dans les bibliothèques proviennent de leurs différents types de constructeur :

  • Constructeur d'objet complet (C1) : Ce constructeur initialise entièrement l'objet, y compris les classes de base virtuelles. .
  • Constructeur d'objet de base (C2) : Ce constructeur initialise l'objet lui-même, ainsi que les données membres et classes de base non virtuelles.

Symboles doubles et erreurs de définition multiples

Malgré les entrées doubles, les définitions de symboles contradictoires ne surviennent pas en raison de l'utilisation de les suffixes C1 et C2. L'ABI garantit que les noms mutilés sont uniques, fournissant ainsi au compilateur la prise en charge de la gestion différente de ces deux types de constructeurs.

Détails supplémentaires

  • En l'absence de base virtuelle classes, les constructeurs d'objets complets et de base sont identiques et les symboles peuvent être associés au même code avec une optimisation suffisante.
  • La nécessité de Les symboles de constructeur double sont principalement pilotés par la prise en charge du polymorphisme, dans lequel différents objets peuvent hériter de différentes classes de base, nécessitant une initialisation spécialisée.
  • Ce comportement était autrefois affiché dans la sortie de c filt mais n'est plus inclus.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal