例如,假设a
是ClassA
中的公共静态成员。
namespace SPACE{
char* ClassA::a=NULL;
ClassA::ClassA()
{
ClassA::a="initialized here";
}
}
所以有两个问题:
a=NULL
?在main()
之前或之后? NULL
和“initialized here"
定义两次?答案 0 :(得分:5)
在main()
只有定义一次 - 在命名空间范围内。第二个是作业。它在构造函数运行时被调用,并且它修改了一个已经存在的(已定义和初始化的)变量。
答案 1 :(得分:2)
何时调用
a=NULL
?在main()
之前或之后?
有可能,它永远不会被调用:因为这是一个const初始化的值,它可能由系统上的可执行文件的加载器初始化而不运行任何代码。是否已使用某些代码初始化,例如a = my_init_func();
,将在main()
之前完成。
因为a是一个静态成员,为什么可以用
NULL
和“在这里初始化”两次定义它?
第二个是作业,而不是声明。