Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

单例模式c++实现

作者:爱我者我必爱*   发布日期:2026-07-31   浏览:74

// 单例模式 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;
}

解释说明:

  1. 私有构造函数Singleton() 是私有的,防止外部通过 new 或者直接调用构造函数来创建对象。
  2. 删除拷贝构造函数和赋值操作符Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete; 确保类不能被复制或赋值。
  3. 静态成员变量static Singleton* instance; 用于存储唯一的实例。
  4. 静态方法 getInstance:提供全局访问点来获取唯一的实例。使用了双重检查锁定模式(Double-Checked Locking Pattern)来确保线程安全,并且只有在第一次调用时才会创建实例。
  5. 示例方法 showMessage:展示如何通过单例对象调用其方法。

这个实现确保了在整个程序运行期间只有一个 Singleton 对象存在,并且是线程安全的。

上一篇:enum c++语言

下一篇:vc++runtime

大家都在看

c++闭包

c++向上取整的代码

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++怎么输入字符串

c++字符串切片

c++ functional

嵌入式c++

c++框架代码

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站