Maison >développement back-end >C++ >En quoi les destructeurs multiples dans GNU GCC (g ) diffèrent-ils et pourquoi sont-ils générés ?
Destructeurs multiples dans GNU GCC (g )
Question :
Lors de l'enquête sur la couverture du code dans GNU GCC (g ), plusieurs destructeurs ont été observés pour BaseClass et DerivedClass. Pourquoi ces multiples destructeurs sont-ils générés et en quoi diffèrent-ils ?
Réponse :
Dans l'ABI Itanium C, trois types de destructeurs sont définis :
Destructeurs multiples dans le code donné :
Le code donné génère plusieurs destructeurs car il inclut des classes de base virtuelles. Dans ce cas :
Utilisation sélective des destructeurs :
L'ABI Itanium C spécifie quel destructeur est exécuté :
Implications sur la couverture :
Pour atteindre une couverture de fonctions à 100 %, il est important de comprendre ces destructeurs et de les invoquer en conséquence dans les tests unitaires. Par exemple, b_ptr doit être supprimé en tant que BaseClass* b_ptr pour exécuter D0 et couvrir les deux destructeurs.
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!