C++单例模式是一种设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。这种设计模式主要用于管理全局配置、共享资源或进行日志记录等。实际工作中很常见,下面给出二种实现方法.
//方法1
class Singleton {
public:
static Singleton& GetInstance() {
static Singleton a;
return a;
}
void SayHi() { std::cout << "方法1" << std::endl; }
private:
Singleton() {} //私有构造函数,不允许实例化
Singleton(const Singleton&) = delete; //设置拷贝构造函数为删除
Singleton& operator=(const Singleton&) = delete;//设置拷贝赋值运算符为删除
};
//方法2
template <class T>
T* GetInstance() {
static T* p = new T();
return p;
}
//用法
class Singleton2 {
public:
Singleton2() {}
void SayHi() { std::cout << "方法2 " << std::endl; }
};
#define MGR() (GetInstance<Singleton2>())
int main() {
std::cout << "Hello World!\n";
Singleton::GetInstance().SayHi();
MGR()->SayHi();
return 0;
}