class A{
/.../
};
class B{
public:
A& foo()
{
A *bar = new A;
return *bar;
}
};
int main()
{
A varA;
B varB;
varA = varB.foo();
return 0;
}
Was passiert, wenn diese Zeile ausgeführt wird varA = varB.foo()
? Wird (nach dem Kopieren/Verschieben des Zuweisungsoperatorfunktionsaufrufs) der Destruktor für das in foo erstellte Objekt aufgerufen?Zuweisen der Referenz, die von der Methode zur Variablen
_ "Was passiert, wenn diese Zeile ausgeführt wird' varA = varB.foo() '" _ Ein Speicherleck – user0042
'foo()' gibt einen Verweis auf ein Objekt auf dem Heap zurück. 'varA' wird von diesem Objekt kopiert, das dann durchgelassen wird. –
Nein, der Destruktor des mit 'new' erstellten Objekts wird nicht aufgerufen. Gehen Sie zu http://en.cppreference.com/w/cpp/language/new und nutzen Sie es als Ausgangspunkt, um mehr über das Thema zu erfahren. –