【发布时间】:2015-01-06 19:33:36
【问题描述】:
我有一段代码已经使用了很长时间,它的场景如下。
有两个类,A 和 B。
A 类有一个公共静态变量static B* pB;
B 类本身有一个静态对象 (static B instance;)。
在B 构造函数中我设置了A::pB = this;
我的问题是,由于静态变量初始化顺序未定义,如果 b::instance 在 A::pB 之前初始化,则首先调用 B 构造函数并尝试设置尚未初始化的 A::pB,可以吗导致问题?
我当前的代码运行时没有任何意外行为。想知道这是否只是我的运气
(A::pB 和 B::instance 的初始化发生在不同的翻译单元中)
【问题讨论】:
-
"悲剧的是你有50%-50%的几率死去"C++ FAQ
-
@Shan:与正常的 100% 死亡几率相比,这很好。我会抓住机会的! :-)
标签: c++