代码之家  ›  专栏  ›  技术社区  ›  theschmitzer

C++问答-独生子女

  •  -3
  • theschmitzer  · 技术社区  · 18 年前

    my blog ,但我想先确认一下我没有遗漏任何东西。

    找一个我错过的例子,我会在我的帖子中引用你。

    主题是失败的单例实现:在什么情况下您可以 意外地 获取单例的多个实例?

    • 第一次调用时的竞争条件 instance()
    • 合并到多个DLL或DLL和可执行文件中
    • 单例的模板定义-实际上是单独的类

    我还缺少其他方式吗?也许是继承?

    2 回复  |  直到 11 年前
        1
  •  3
  •   On Freund    18 年前

    如果使用在cpp文件中初始化的静态实例字段,如果某些静态/全局的初始化尝试获取单例实例,则可能会获得多个实例(甚至更糟糕的行为)。这是因为编译单元之间的静态初始化顺序未定义。

        2
  •  1
  •   David Joyner    18 年前

    只要ctor是私有的,继承就不应该成为问题。

    boost::noncopyable 这是最简单的预防方法。

    推荐文章