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

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

#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;
}

相关推荐

  1. C++设计模式模式

    2024-02-08 13:16:02       58 阅读
  2. c++设计模式模式

    2024-02-08 13:16:02       46 阅读
  3. C++ 设计模式模式

    2024-02-08 13:16:02       47 阅读
  4. C++设计模式模式

    2024-02-08 13:16:02       30 阅读
  5. 【1】C++设计模式模式

    2024-02-08 13:16:02       34 阅读
  6. Linux C++ 060-设计模式模式

    2024-02-08 13:16:02       25 阅读
  7. 【前端设计模式模式

    2024-02-08 13:16:02       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-08 13:16:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-08 13:16:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-08 13:16:02       82 阅读
  4. Python语言-面向对象

    2024-02-08 13:16:02       91 阅读

热门阅读

  1. 学习C语言的第4天

    2024-02-08 13:16:02       49 阅读
  2. B2071 余数相同问题(洛谷)

    2024-02-08 13:16:02       62 阅读
  3. Python数据容器(上)——list(列表)

    2024-02-08 13:16:02       49 阅读
  4. 快速重启网络服务 IP Helper

    2024-02-08 13:16:02       44 阅读
  5. git恢复rebase过程中遇到权限问题和丢失的提交

    2024-02-08 13:16:02       45 阅读
  6. python加密通信的优化1.0

    2024-02-08 13:16:02       46 阅读
  7. 数据分析基础之《pandas(6)—高级处理》

    2024-02-08 13:16:02       48 阅读
  8. 【原创】MQTT开发笔记(四)- 压力测试

    2024-02-08 13:16:02       55 阅读
  9. Why React Doesn‘t Need jQuery?

    2024-02-08 13:16:02       51 阅读