c++ - 单例和全局变量的区别

标签 c++ design-patterns

<分区>

我知道单例只允许一个对象的一个​​实例。单例中声明的每个方法都只会对这个对象进行操作。 我想知道为什么不简单地声明一个将实现相同目标的全局对象?

我确实忘记了什么。如果单例存在,则必须有特定用途或有助于实现特定机制。

例如:

class Singleton
{
public:
    static Singleton& Instance()
    {
        static Singleton sg;
        return sg;
    }

    void function();
};

将等同于:

class NotSingleton
{
public:
    NotSingleon();
    ~NotSingleton()
    void function();
};
NotSingleton nsg;

但是,没有什么能阻止我使用多个 NotSingleton

最佳答案

当我们不想创建多个对象时使用单例。单例类确保创建的对象不超过一个。但是,拥有全局对象并不能确保这一点。

class Singleton {
    public static Singleton object = null;
   
    public void singleton() {
        if (object == null)
            object = new Singleton();
        return object;
   }
}

此类不会创建多个对象。这就是 Singleton 类的目的。

关于c++ - 单例和全局变量的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42870559/

相关文章:

c++ - 如何从多重 map 中删除项目

c++ - 在PROGMEM中添加更多数据会中断Arduino Mega 2560上的SPI传输

java - 方法重载与工厂

c++ - 有属性问题的对象工厂?

java - Decorator模式链式方法如何调用?

design-patterns - 具有多个上下文的多个模式?

c++ - error_code 与 errno

c++ - 使用 ffmpeg 创建视频

c++ - 协程参数的生命周期是多少

java - JPA 将属性存储为行