Die Definition von some_class
ist:Verhalten von explizitem Aufruf destructor
class some_class
{
// stuff
public:
~some_class()
{
delete dynamic_three;
}
private:
classA one;
classB two;
classC* dynamic_three;
}
Wenn die Lebensdauer eines Objekts endet, seine Zerstörung ist: (1) seinen destructor anrufen und (2) seine Subobjekte in zerstören die gleiche Reihenfolge, in der sie in der Klassendefinition deklariert sind (= Position im Speicher).
Aber, wenn ich so etwas haben:
auto* ptr = new some_class();
// more stuff
ptr->~some_class(); // l. X
Der Schritt (2) realisiert wird, auch? Ich meine, in Zeile X werden Destruktoren von Teilobjekten auch aufgerufen oder nur der Körper des Destruktors some_class
ausgeführt?
Ähm, nein, ein Destruktor gibt keinen reservierten Speicher frei. Der "delete" -Operator macht das. –