C++编程:深入理解单例模式

发表时间: 2023-12-11 22:51

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;

}