Maison > Article > développement back-end > Pourquoi l'Itanium C ABI émet-il des symboles à double constructeur ?
L'Itanium C ABI spécifie la modification des noms de fonctions pour inclure des informations sur leurs paramètres et la fonctionnalité. Les noms des constructeurs suivent un modèle spécifique :
_Z | N | <class_name> | <ctor-type> | E | <parameters> prefix | nested | `Thing` | Constructor | end nested | parameters: `int`
Les symboles des constructeurs dans la bibliothèque apparaissent deux fois en raison des différents types de constructeurs émis par GCC :
Même si la classe en question n'a pas de classes de base virtuelles, GCC émet toujours les deux constructeurs comme sous-produit de la prise en charge du polymorphisme. Si le polymorphisme n'est pas impliqué, GCC pourrait optimiser en émettant un seul constructeur.
Les deux constructeurs ont des noms différents en raison des désignateurs C1 et C2 dans leurs noms mutilés, qui indiquent les différents types de construction qu'ils effectuent.
La double émission des symboles constructeurs est une conséquence de l'ABI Itanium C et prise en charge du polymorphisme, mais il peut être optimisé par GCC lorsque le polymorphisme n'est pas utilisé.
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!