C++ 设计模式之单例模式

单例模式确保一个类只有一个实例,并提供一个全局访问点。以下是一个简单的C++例程,演示了单例模式的实现。在这个例子中,我们创建了一个名为 Singleton 的类,它只能创建一个实例。

cpp 复制代码
#include <iostream>

class Singleton {
public:
    // 获取单例实例的全局访问点
    static Singleton& getInstance() {
        // 使用局部静态变量确保只创建一次实例
        static Singleton instance;
        return instance;
    }

    // 示例成员函数
    void showMessage() {
        std::cout << "Hello from Singleton!" << std::endl;
    }

    // 禁用拷贝构造函数和赋值运算符
    Singleton(const Singleton&) = delete;
    Singleton& operator=(const Singleton&) = delete;

private:
    // 私有构造函数,确保不能通过外部代码创建实例
    Singleton() {
        std::cout << "Singleton instance created." << std::endl;
    }

    // 私有析构函数,确保不能通过外部代码销毁实例
    ~Singleton() {
        std::cout << "Singleton instance destroyed." << std::endl;
    }
};

int main() {
    // 获取单例实例
    Singleton& instance1 = Singleton::getInstance();
    Singleton& instance2 = Singleton::getInstance();

    // 验证实例是否相同
    std::cout << "Are instances the same? " << (&instance1 == &instance2 ? "Yes" : "No") << std::endl;

    // 使用单例实例
    instance1.showMessage();
    instance2.showMessage();

    return 0;
}
相关推荐
saltymilk7 小时前
使用 C++ 模拟 ShaderLanguage 的 swizzle
c++·模板元编程
xlp666hub13 小时前
Leetcode第五题:用C++解决盛最多水的容器问题
linux·c++·leetcode
程序员Terry14 小时前
同事被深拷贝坑了3小时,我教他原型模式的正确打开方式
java·设计模式
得物技术14 小时前
搜索 C++ 引擎回归能力建设:从自测到工程化准出|得物技术
c++·后端·测试
刀法如飞1 天前
AI时代,程序员都应该是算法思想工程师
人工智能·设计模式·程序员
xlp666hub1 天前
Leetcode 第三题:用C++解决最长连续序列
c++·leetcode
会员源码网1 天前
构造函数抛出异常:C++对象部分初始化的陷阱与应对策略
c++
xlp666hub2 天前
Leetcode第二题:用 C++ 解决字母异位词分组
c++·leetcode
在西安放羊的牛油果2 天前
我把 2000 行下单代码,重构成了一套交易前端架构
前端·设计模式·架构
不想写代码的星星2 天前
static 关键字:从 C 到 C++,一篇文章彻底搞懂它的“七十二变”
c++