#pragma warning(disable:4996)
#include <iostream>
using namespace std;
namespace ddk
{
template <class T>
class singleton
{
singleton(const singleton<T>&) = delete;
singleton& operator =(const singleton<T>&) = delete;
public:
singleton() = default;
virtual ~singleton() = default;
static T& getInstance()
{
static T ms_pSingleton;
return ms_pSingleton;
}
static T* instance()
{
return &getInstance();
}
};
}
#define SINGLETON_CLASS(name) \
class name : public ddk::singleton<name>
#define SINGLETON_IMPL(name) \
friend class ddk::singleton<name>;
SINGLETON_CLASS(MySingleton)
{
SINGLETON_IMPL(MySingleton)
public:
VOID Init()
{
printf("Init\n");
return;
}
private:
};
int main()
{
MySingleton::getInstance().Init();
system("pause");
return 0;
}
单例模板应用
于 2023-05-05 10:51:55 首次发布
文章展示了如何在C++中使用模板类来实现单例模式。定义了一个名为`singleton`的模板类,该类禁止复制构造函数和赋值操作,确保只有一个实例存在。通过`getInstance`方法获取单例对象,并提供了一个宏定义`SINGLETON_CLASS`和`SINGLETON_IMPL`简化单例类的声明和实现。在示例中,创建了一个名为`MySingleton`的单例类并初始化。
摘要由CSDN通过智能技术生成