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;
}
相关推荐
txinyu的博客5 小时前
解析业务层的key冲突问题
开发语言·c++·分布式
SmartRadio6 小时前
ESP32添加修改蓝牙名称和获取蓝牙连接状态的AT命令-完整UART BLE服务功能后的完整`main.c`代码
c语言·开发语言·c++·esp32·ble
charlie1145141918 小时前
嵌入式的现代C++教程——constexpr与设计技巧
开发语言·c++·笔记·单片机·学习·算法·嵌入式
刀法如飞8 小时前
开箱即用的 DDD(领域驱动设计)工程脚手架,基于 Spring Boot 4.0.1 和 Java 21
java·spring boot·mysql·spring·设计模式·intellij-idea
CSDN_RTKLIB11 小时前
【字符编码】有无BOM的UTF-8
c++
GISer_Jing11 小时前
AI Agent 人类参与HITL与知识检索RAG
人工智能·设计模式·aigc
Chary201611 小时前
opengl 学习资料路径
c++·opengl
im_AMBER12 小时前
Leetcode 102 反转链表
数据结构·c++·学习·算法·leetcode·链表
今儿敲了吗12 小时前
01|多项式输出
c++·笔记·算法
程序员Jared12 小时前
C++11—mutex
c++