我有一份示例代码:
#include <QCoreApplication>
#include <QTimer>
#include <cstdio>
using namespace std;
class A : public QObject
{
public:
~A() { printf("destructor A\n"); }
};
class B : public QObject
{
public:
B(QObject * parent) : QObject(parent) { }
~B() { printf("destructor B\n"); }
};
class C : public QObject
{
public:
C(QObject * parent) : QObject(parent) { }
~C() { printf("destructor C\n"); }
};
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
auto * a = new A;
auto * b = new B(a);
auto * c = new C(a);
delete a;
QTimer::singleShot(30000, &app, &QCoreApplication::quit);
return app.exec();
}
执行以上应用程序会给我以下结果:
destructor A
destructor B
destructor C
auto(qt)销毁操作的顺序是什么?
我可以假设销毁(B, C)的顺序与创建(new B(a), new C(a))的顺序相同吗?
为什么销毁的顺序不是:A,C,B?