看一下下面的代碼:爲什麼允許創建多個QCoreApplication對象?
#include <QDebug>
#include <QCoreApplication>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
qDebug() << QCoreApplication::instance(); // prints QCoreApplication(0x7ffd39656150)
QCoreApplication app2(argc, argv);
qDebug() << QCoreApplication::instance(); // prints QCoreApplication(0x7ffd39656160)
return 0;
}
看起來,它可以創建一個以上的QCoreApplication對象,但應該是一個單身。第一個創建的QCoreApplication對象會發生什麼?當兩個對象調用exec時,它會被銷燬還是會出現兩個事件循環?
您正在構建兩次單身人士。你期望什麼?你不應該那樣做。單例並不意味着一個類作爲底層實例的句柄。 'Q_GLOBAL_STATIC'實現它。 –
再次運行你的測試。在運行兩個qDebug語句之前創建'QCoreApplication'的兩個實例,您將看到內存地址相同。這意味着當您創建第二個實例時,單例實例將被替換(但不會被刪除)。 – RobbieE