例如,假设 a
是ClassA
.
namespace SPACE{
char* ClassA::a=NULL;
ClassA::ClassA()
{
ClassA::a="initialized here";
}
}
那么两个问题:</p>
- 什么时候
a=NULL
被调用?在那之前main()
还是之后? - 既然a是静态成员,为什么可以用
NULL
and定义两次“initialized here"
?</li>
前main()
它只定义一次 - 在命名空间范围内。第二个是作业。它在构造函数运行时被调用,并修改已经存在的(定义和初始化的)变量。
什么时候
a=NULL
被调用?在那之前main()
还是之后?
很有可能,它永远不会被调用:因为这是一个常量初始化值,它可以由系统上可执行文件的加载器初始化,而无需运行任何代码。如果它是用一些代码初始化的,例如a = my_init_func();
,那将在main()
.
既然a是一个静态成员,为什么它可以被定义两次
NULL
并“在这里初始化”?</p>
第二个是赋值,而不是声明。