#include <iostream>
#include <mutex>
class Singleton {
private:
// 私有构造函数,防止外部实例化
Singleton() {}
// 删除拷贝构造函数和赋值操作符
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
// 静态成员变量保存唯一的实例
static Singleton* instance;
public:
// 获取唯一实例的静态方法
static Singleton* getInstance() {
std::call_once(initFlag, []{ instance = new Singleton(); });
return instance;
}
void showMessage() {
std::cout << "Hello from Singleton!" << std::endl;
}
private:
static std::once_flag initFlag;
};
// 初始化静态成员变量
Singleton* Singleton::instance = nullptr;
std::once_flag Singleton::initFlag;
int main() {
// 获取单例对象并调用其方法
Singleton* singleton = Singleton::getInstance();
singleton->showMessage();
return 0;
}
Singleton() 是私有的,防止外部直接创建 Singleton 的实例。Singleton 对象不能被复制或赋值。static Singleton* instance; 用于保存唯一的实例。std::call_once 和 std::once_flag 确保在多线程环境下 getInstance 方法只会初始化一次。static Singleton* getInstance() 是获取唯一实例的静态方法。main 函数中通过 Singleton::getInstance() 获取单例对象,并调用其方法。上一篇:c++图形库
下一篇:string c++
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站