Heim >Backend-Entwicklung >C++ >Wie unterscheiden sich mehrere Destruktoren in GNU GCC (g) und warum werden sie generiert?
Mehrere Destruktoren in GNU GCC (g)
Frage:
Bei der Untersuchung der Codeabdeckung In GNU GCC (g) wurden mehrere Destruktoren sowohl für BaseClass als auch für DerivedClass beobachtet. Warum werden diese mehreren Destruktoren generiert und wie unterscheiden sie sich?
Antwort:
Im Itanium C ABI sind drei Arten von Destruktoren definiert:
Mehrere Destruktoren im angegebenen Code:
Der angegebene Code generiert mehrere Destruktoren, da er virtuelle Basisklassen enthält. In diesem Fall:
Selektive Verwendung von Destruktoren:
Das Itanium C ABI gibt an, welcher Destruktor ausgeführt wird:
Auswirkungen auf die Abdeckung:
Um eine 100-prozentige Funktionsabdeckung zu erreichen, ist es wichtig, diese Destruktoren zu verstehen und sie in Komponententests entsprechend aufzurufen. Beispielsweise sollte b_ptr als BaseClass* b_ptr gelöscht werden, um D0 auszuführen und beide Destruktoren abzudecken.
Das obige ist der detaillierte Inhalt vonWie unterscheiden sich mehrere Destruktoren in GNU GCC (g) und warum werden sie generiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!