声明毁丛困
public:
static demo* instance()
private:
demo()
static demo*m_p
定义纤念
demo*demo::m_p= 0
demo*demo::instance()
{
if (!m_p)
{
m_p = new demo
}
return m_p
}
在windows下互斥体有个唯一的key,通过key去创建互斥体,如果这巧腔薯个互斥体已经存在了,那么通过GetLastError能获取到这个信息,表示程序已经在运行了。互斥体还有个优点圆裤就是在程序关闭时孝者,会自动释放掉!
#include "mainwindow.h"
#include <QApplication>
#include <windows.h>
int main(int argc, char *argv[]){
QApplication a(argc, argv)
QString strKey = "mykey"
LPCWSTR wstrKey = strKey.toStdWString().c_str()
HANDLE hMetex = CreateMutex(NULL,FALSE,wstrKey)
if(GetLastError() == ERROR_ALREADY_EXISTS){
//如果互斥体存在,说明程序已经有实例在运行了,释放资源然后关闭本实例
if(hMetex){
CloseHandle(hMetex)
hMetex = NULL
}
return -1
}
MainWindow w
w.show()
return a.exec()
}
单例模式就是 :1、类的构造函数为private,即外部程序不能通过new关键桐橘字创建对象的实例
2、类中提供一个private static的 类变量引用 ;
3、单例类中提供静态方法 定义为 public static 的方法获取一个类的实例 ;
4、静态方法返回 类的乎配引用,即 第2点中的 私有 静态变量 。
私有静态变量可以 定义的时候初始化 ,也可以 在第一次使用的时候,即调用AA.getInstanc()方法中判断岁轮指 静态变量是否为空在初始化 。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)