我很快就会在my blog上发表一篇文章,但我想确认一下我没有错过任何内容。
找一个我错过的例子,我会在帖子上引用你。
主题是单例实现失败:在什么情况下你意外地获得单个实例的多个实例?
到目前为止,我已经提出:
instance()
时的比赛条件我遗失的任何其他方式 - 也许是继承?
答案 0 :(得分:3)
如果使用在cpp文件中初始化的静态实例字段,如果某些静态/全局的初始化尝试获取单例的实例,则可以获得多个实例(甚至更糟的行为)。这是因为未定义编译单元之间的静态初始化顺序。
答案 1 :(得分:1)
只要ctor是私有的,继承应该不是问题。
但是,如果您不禁止复制构造函数,则用户可以[un]故意复制单例实例。私有地继承自boost::noncopyable是防止这种情况的最简单方法。