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;
}
相关推荐
QT-Neal4 小时前
C++ 编码规范
c++
啦啦啦啦啦zzzz4 小时前
数据结构:红黑树理论
数据结构·c++·红黑树
Yolo_TvT4 小时前
C++:默认构造函数
c++
折哥的程序人生 · 物流技术专研5 小时前
Java 23 种设计模式:从踩坑到精通 | 原型模式 —— 克隆对象,深拷贝与浅拷贝的坑你踩过吗?
java·设计模式·架构·原型模式·单一职责原则
小欣加油6 小时前
leetcode994 腐烂的橘子
数据结构·c++·算法·leetcode·bfs
.千余6 小时前
【C++】手写双向链表:list容器模拟实现
开发语言·c++·笔记·学习·其他
liulilittle7 小时前
过冲:拥塞控制的呼吸与盲行
linux·网络·c++·tcp/ip·计算机网络·tcp·通信
小欣加油7 小时前
leetcode2574 左右元素和的差值
数据结构·c++·算法·leetcode·职场和发展
weixin_461769408 小时前
通过数组和队列构造二叉树方法(用于算法测试),C++ vector不能直接使用null
数据结构·c++·算法·vector·nullptr·null
千寻girling8 小时前
一周没跑步了 ,今日跑步 5KM , 哑铃+健身 20min , 俯卧撑 30 个 ;
数据结构·c++·python·算法·leetcode·职场和发展·线性回归