如果变量声明为static在函数的作用域中,则仅初始化一次并在函数调用之间保留其值.它的生命到底是什么?它的构造函数和析构函数何时被调用?
void foo()
{
static string plonk = "When will I die?";
}
Run Code Online (Sandbox Code Playgroud) 我没有严格遵循Qt 的文档.而不是使用新的我使用静态局部变量来能够调用单例类的析构函数.这里描述了不同之处.
我的问题是退出我的程序时,我的一个单例类导致它崩溃.在调试模式下,调试器将停止在该类的析构函数中.这个单例类和其他类之间的不同之处在于我的QML和cpp文件都使用了这个类.
我的问题是我是否必须使用new关键字为这个单例分配一个实例?
头
class AppConfiguration : public QObject
{
Q_OBJECT
Q_DISABLE_COPY(AppConfiguration)
Q_PROPERTY(bool serverMode READ serverMode WRITE setServerMode NOTIFY serverModeChanged)
public:
static QObject* instance(QQmlEngine* engine = NULL, QJSEngine* scriptEngine = NULL);
~AppConfiguration();
protected:
AppConfiguration();
private:
static QObject* s_instance;
};
Run Code Online (Sandbox Code Playgroud)
CPP
QObject* AppConfiguration::s_instance = NULL;
QObject* AppConfiguration::instance(QQmlEngine *engine,
QJSEngine *scriptEngine)
{
Q_UNUSED(engine)
Q_UNUSED(scriptEngine)
static AppConfiguration s_instance;
return &s_instance;
}
AppConfiguration::AppConfiguration() :
m_serverMode(true)
{
}
AppConfiguration::~AppConfiguration()
{
}
Run Code Online (Sandbox Code Playgroud)
主要
int main(int argc, char *argv[])
{
QApplication app(argc, …Run Code Online (Sandbox Code Playgroud)