Questo simbolo sembra essere un distruttore generato dal compilatore. Qual è la differenza tra questo, "distruttore generato dal compilatore" e "distruttore di cancellazione scalare"? Ci sono altri tipi di personaggi generati dal compilatore?Qual è il significato del simbolo "vettore che elimina il distruttore" in VC++?
risposta
Le funzioni denominate 'scalar deleting destructor'
e 'vector deleting destructor'
sono funzioni di aiuto create dal compilatore VC durante la generazione del codice per l'istruzione delete
. Non confonderli con il distruttore di classe che potrebbe anche essere generato dal compilatore. Il primo può essere espresso in pseudocodice come
void scalar_deleting_destructor(A* pa)
{
pa->~A();
A::operator delete(pa);
}
e la seconda come
void vector_deleting_destructor(A* pa, size_t count)
{
for (size_t i = 0; i < count; ++i)
pa[i].~A();
A::operator delete[](pa);
}
Grazie, Andrey. Sono un po 'confuso riguardo l'operatore di cancellazione interna qui. Questo distruttore di cancellazione scalare è generato dal compilatore ed è chiamato da "cancella a", vero? Sembra che la chiamata interna per cancellare causi la ricorsione? – Thomson
@Thomson Fammi provare a renderlo più chiaro. 'delete a' è un'istruzione * delete *, cioè un costrutto di linguaggio, che non deve essere confuso con' A :: operator delete' che è un * delete operator *, una funzione che rilascia di fatto la memoria. Non ho lo standard C++ a portata di mano in questo momento, potrei fornire riferimenti un po 'più tardi. – Andrey
- 1. Qual è il significato del simbolo $ in jQuery?
- 2. Qual è il significato di ∃?
- 3. Perché il vettore che elimina il distruttore viene chiamato come risultato di un'eliminazione scalare?
- 4. qual è il significato del numero 1e5?
- 5. qual è il significato del simbolo del dollaro, dopo un nome di metodo in vb.net
- 6. Qual è il significato dell'operatore == <>?
- 7. Qual è il significato di un doppio simbolo del dollaro in bash/Makefile?
- 8. Qual è il significato dell'operatore || =
- 9. Qual è il significato di [...] in python?
- 10. Qual è il vero significato del valore restituito di `delete`?
- 11. Qual è il significato dell'operatore &?
- 12. Qual è il significato di "==" in C?
- 13. Qual è il significato del simbolo "meno di un punto" nell'output della console di Chrome?
- 14. Qual è il significato di "_" in python?
- 15. Qual è il significato del nome di fork() in Linux
- 16. Qual è il significato del pragma "magico" in nim?
- 17. Qual è il significato di @_ in Perl?
- 18. In Message.CreateMessage, qual è il significato del parametro "azione"?
- 19. Qual è il significato del doppio segno percentuale (%%) in R
- 20. Qual è il significato del segno "@" in cshtml?
- 21. Qual è il significato del nome del token PHP T_PAAMAYIM_NEKUDOTAYIM?
- 22. Qual è il simbolo del separatore decimale in JavaScript?
- 23. Qual è il significato di $ in un nome di variabile?
- 24. Qual è il simbolo del metodo per + = in ruby?
- 25. Qual è il simbolo del chip `mux` in C?
- 26. qual è il simbolo del triplo dollaro in jquery?
- 27. Il simbolo del Clojure è un simbolo?
- 28. Significato del simbolo PLSQL "=>"
- 29. Qual è il $$ (doppio simbolo del dollaro) utilizzato in angolare?
- 30. Qual è il significato di <- in AI?
Perché non accetta l'anwser? – Liviu