Angenommen, wir das folgende Stück von C++ Code haben zu befreien:Der richtige Weg Speicher zusammengesetzt Strukturen
struct A
{
int* a;
A()
{
a = new int(5);
}
~A()
{
delete a;
}
};
struct B
{
A a;
int b;
B()
{
a = A();
b = 10;
}
};
int main()
{
B b;
return 0;
}
Wenn es läuft, wird ein Destruktor zweimal genannt, aber warum? Von was ich verstehe B ruft implizite Destruktor alle Destruktoren von B-Mitgliedern auf, was in Ordnung ist, aber wann kommt der zweite Aufruf von A's Destruktor und warum? Was ist der richtige Weg, um in solchen Fällen mit dem Speicher umzugehen?
Der destructor zum ersten Mal hier genannt werden: 'a = A();' –