Qt 单例模式的实现

Qt 单例模式的实现
1、静态对象static MyClass* MyClass::Instance(){static MyClass inst;return inst;}过去很长一段时间一直都这么写简单粗暴有效。但是直接声明静态对象会使编译出的可执行文件增大也有可能出现其他的一些问题所以利用了Qt自带的智能指针QScopedPointer和线程锁QMutex改成了需要时才动态初始化的模式2、动态初始化static MyClass* MyClass::Instance(){static QMutex mutex;static QScopedPointerMyClass inst;if (Q_UNLIKELY(!inst)) {mutex.lock();if (!inst) {inst.reset(new MyClass);}mutex.unlock();}return inst.data();}既保证了线程安全又防止了内存泄漏效率也没降低太多简直完美。可惜每次都要重复这么几行实在麻烦于是写了一个模板类3、模板类使用时MyClass* inst SingletonMyClass::Instance();