"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué hay dos símbolos para los constructores de C++?

¿Por qué hay dos símbolos para los constructores de C++?

Publicado el 2024-11-18
Navegar:851

Why Are There Two Symbols for C   Constructors?

Símbolos duales para constructores C

La ABI de Itanium C especifica que los nombres alterados de los constructores incluyen información sobre su tipo y parámetros. En consecuencia, las dos entradas de constructor observadas en las bibliotecas provienen de sus diferentes tipos de constructor:

  • Constructor de objeto completo (C1): Este constructor inicializa completamente el objeto, incluidas las clases base virtuales. .
  • Constructor de objeto base (C2): Este constructor inicializa el objeto en sí, junto con los miembros de datos y las clases base no virtuales.

Símbolos duales y errores de definición múltiple

A pesar de tener entradas duales, no surgen definiciones de símbolos conflictivas debido al uso de los sufijos C1 y C2. La ABI garantiza que los nombres alterados sean únicos, brindando soporte al compilador para manejar estos dos tipos de constructores de manera diferente.

Detalles adicionales

  • En ausencia de una base virtual clases, los constructores de objetos completos y base son idénticos, y los símbolos pueden tener un alias en el mismo código con una optimización suficiente.
  • La necesidad de símbolos de constructor dual se debe principalmente a la compatibilidad con el polimorfismo, donde diferentes objetos pueden heredar diferentes clases base, que requieren inicialización especializada.
  • Este comportamiento alguna vez se mostró en la salida de c filt pero ya no se incluye.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3