// 单例模式 C++ 实现
#include <iostream>
#include <mutex>
class Singleton {
private:
// 私有构造函数,防止外部实例化
Singleton() {}
// 删除拷贝构造函数和赋值操作符,防止拷贝
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
// 静态成员变量保存唯一的实例
static Singleton* instance;
public:
// 获取唯一实例的静态方法
static Singleton* getInstance() {
// 使用双重检查锁定模式(Double-Checked Locking Pattern)确保线程安全
if (instance == nullptr) {
std::mutex mutex;
std::lock_guard<std::mutex> lock(mutex);
if (instance == nullptr) {
instance = new Singleton();
}
}
return instance;
}
// 示例方法
void showMessage() {
std::cout << "Hello from Singleton!" << std::endl;
}
};
// 初始化静态成员变量
Singleton* Singleton::instance = nullptr;
int main() {
// 获取单例对象并调用方法
Singleton* singleton = Singleton::getInstance();
singleton->showMessage();
return 0;
}
Singleton() 是私有的,防止外部通过 new 或者直接调用构造函数来创建对象。Singleton(const Singleton&) = delete; 和 Singleton& operator=(const Singleton&) = delete; 确保类不能被复制或赋值。static Singleton* instance; 用于存储唯一的实例。getInstance:提供全局访问点来获取唯一的实例。使用了双重检查锁定模式(Double-Checked Locking Pattern)来确保线程安全,并且只有在第一次调用时才会创建实例。showMessage:展示如何通过单例对象调用其方法。这个实现确保了在整个程序运行期间只有一个 Singleton 对象存在,并且是线程安全的。
上一篇:enum c++语言
下一篇:vc++runtime
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站