Lassen Sie uns eine Klasse Test
und eine Klasse AnotherClass
haben. Beide stammen von QObject.Einen eigenen Destruktor definieren, obwohl die Klasse von QObject abgeleitet ist?
Test.h:
class Test : public QObject
{
Q_OBJECT
public:
Test(QObject* parent);
~Test();
private:
AnotherClass* other;
};
class AnotherClass : public QObject
{
Q_OBJECT
public:
AnotherClass(QObject* parent);
~AnotherClass();
};
Test.cpp:
Test::Test(QObject* parent) : QObject(parent)
{
other = new AnotherClass(this);
}
Test::~Test()
{
delete other;
}
other
automatisch zerstört werden, wenn die Test
-instance zerstört wird, weil Test
ist die Mutter von other
, nicht wahr?
- Jetzt soll ich von mir selbst löschen
other
in~Test()
oder es das Programm in einem undefinierten Bühne nicht verlassen, weil sie zweimal das gleiche Objekt zu löschen versucht? - Was ist der richtige Ansatz hier?
Ihre Destruktoren sollten virtuell sein. – KoVadim
@KoVadim - Da QObject über einen virtuellen Destruktor verfügt, sind seine Destruktoren implizit bereits virtuell. – Roddy