c++ - 为什么 Singleton 是比 Global Objects 更好的选择

标签 c++ namespaces singleton global-object

<分区>

你好堆栈溢出。

我正在准备明天的 CS 考试,我正在查看我们的教授为我们提供的复习表。其中一个要点是要知道为什么 Singleton 是比 Global 更好的选择。

我不太确定其中的原因,但我确实记得他说过一些关于 Singleton 使用较少“ namespace 污染”的事情。我做了几次谷歌搜索,比较了 Singleton 和 Global,但几乎所有的结果都说这两个都是糟糕的选择,哈哈。所以它让我不再困惑了。

如果有人能帮我解决这个问题,我将不胜感激。谢谢!

最佳答案

它们是惰性构造的:

LargeObject   global;                    // Large object is always constructed.

class LargeObject_Singelton
{
    public: static LargeObject& getInstance()
    {
        static LargeObject  instance;     // This object is not created until the first
        return instance;                  // time getInstance() is called.
    }                                     // If you never use it this can be important.
};

关于c++ - 为什么 Singleton 是比 Global Objects 更好的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15193358/

相关文章:

c++ - 你如何调用一个返回引用或抛出异常的函数而无需体操?

java - 如何继承单例

java - LOG4J作为单例,反正是为了避免web环境下的log4j日志记录冲突

c++ - 使用 GCC 编译没有 RTTI 的时间 typeid

c++ - 定点数的动态格式化

c++ - "class not registered"是哪个类?

c++ - 将单个类导入命名空间似乎要求命名空间之间不存在函数名称冲突

php - Laravel/流明 PSR-4 : If I put classes into subdirectories do I have to use different namespaces then?

c++ - "augments std"的代码使用什么命名空间?

java - 仅允许访问一个对象来读取和写入文件