1
我有以下文件:静态变量的初始化:位置相关?
.h文件
class myclass
{
static int variable;
// constructor
myclass();
}
cpp文件
// initialize this variable
int myclass::variable = 0;
myclass::myclass()
{
// I use here the static variable
}
我的问题是:当静态变量将被初始化?首先还是在构造函数之后?
如果我把
int myclass::variable = 0;
线类的构造函数定义之后?它会在类的对象实例化之前被初始化吗?
小的修正:它不管所述_can_变量被定义,其中,所述编译器可以重新排序初始化如果变量被移动。然而,我们不能依赖订单,唯一的保证是静态变量将在main() – Vlad 2012-07-21 10:08:13
之前被初始化,myclass :: variable'在构造函数调用'globalInstance'之前仍然是零初始化,因为后者是动态的初始化。 – 2012-07-21 10:09:53
@Vlad:在命名空间范围内,在翻译单元中静态存储持续时间的对象必须按其声明的顺序进行初始化,以便编译器_must_在重新排序声明时重新排序初始化(除非在“as if”规则下,它可以确定订单无关紧要)。 – 2012-07-21 10:14:07