Este símbolo parece ser un destructor generado por el compilador. ¿Cuál es la diferencia entre este, 'destructor generado por el compilador' y 'destructor por eliminación escalar'? ¿Hay algún otro tipo de compilador generado ctor/dtor?¿Cuál es el significado del símbolo "vector deleteting destructor" en VC++?
Respuesta
Las funciones llamadas 'scalar deleting destructor'
y 'vector deleting destructor'
son funciones auxiliares creadas por el compilador de VC al generar código para la instrucción delete
. No los confunda con el destructor de clase que también puede ser generado por el compilador. El primero puede ser expresado en pseudocódigo como
void scalar_deleting_destructor(A* pa)
{
pa->~A();
A::operator delete(pa);
}
y el segundo como
void vector_deleting_destructor(A* pa, size_t count)
{
for (size_t i = 0; i < count; ++i)
pa[i].~A();
A::operator delete[](pa);
}
Gracias, Andrey. Estoy un poco confundido acerca del operador de eliminación interna aquí. Este destructor de eliminación escalar es un compilador generado y se llama por 'delete a', ¿es así? Parece que la llamada interna para eliminar causa recursividad? – Thomson
@Thomson Permítanme intentar dejarlo más claro. 'delete a' es una * declaración de borrado *, es decir, una construcción de lenguaje, que no debe confundirse con' A :: operator delete' que es un * delete operator *, una función que desasigna la memoria. No tengo el estándar de C++ a mano en este momento, podría proporcionar referencias un poco más tarde. – Andrey
- 1. ¿Cuál es el significado del símbolo '@' en Oracle SQL?
- 2. ¿Cuál es el significado de ∃?
- 3. Significado del símbolo "~" (tilde) en C++?
- 4. Significado del símbolo PLSQL "=>"
- 5. ¿Cuál es el significado del operador &?
- 6. ¿Cuál es el significado de []
- 7. Cuál es el significado del signo "$" en javascript
- 8. ¿Cuál es el significado del atributo android: progressBarStyle en ProgressBar?
- 9. ¿Cuál es el significado del proxy en EntityFramework?
- 10. ¿Cuál es el significado del método Thread.Join en C#?
- 11. ¿Cuál es el significado del término "función libre" en C++?
- 12. ¿Cuál es el significado del token <?> en Java?
- 13. ¿Cuál es el significado de $$ en Ruby?
- 14. ¿Cuál es el significado de '_' en python?
- 15. ¿Cuál es el significado de '==' en C?
- 16. ¿Cuál es el significado de @_ en Perl?
- 17. ¿Cuál es el significado de $ en un nombre de variable?
- 18. ¿Cuál es el uso del símbolo @ en PHP?
- 19. ¿Cuál es el propósito del símbolo '@' en CSS?
- 20. ¿Cuál es el significado de <- en AI?
- 21. std :: vector :: clear() en constructor y destructor
- 22. ¿Cuál es el verdadero significado del valor devuelto de `delete`?
- 23. ¿cuál es el significado del contenido de/proc/ioports
- 24. ¿Cuál es el significado del término "Clase personalizada"?
- 25. ¿Cuál es el significado del doble guión bajo ($ _. Valor__)?
- 26. ¿Cuál es el símbolo '#" en Pascal
- 27. ¿Cuál es el símbolo @ en Javascript?
- 28. ¿Cuál es el significado de ORM?
- 29. ¿Cuál es el significado SQL de 0x5E5B7D7E?
- 30. VC++ previene todas las decoraciones del nombre de símbolo
¿Por qué no se acepta la anwser? – Liviu