1

例如,假设 aClassA.

namespace SPACE{

   char* ClassA::a=NULL;

   ClassA::ClassA()
   {
     ClassA::a="initialized here";
   }
}

那么两个问题:</p>

  1. 什么时候a=NULL被调用?在那之前main()还是之后?
  2. 既然a是静态成员,为什么可以用NULLand定义两次“initialized here"?</li>
4

2 回答 2

5
  1. main()

  2. 它只定义一次 - 在命名空间范围内。第二个是作业。它在构造函数运行时被调用,并修改已经存在的(定义和初始化的)变量。

于 2013-09-19T19:38:35.833 回答
2

什么时候a=NULL被调用?在那之前main()还是之后?

很有可能,它永远不会被调用:因为这是一个常量初始化值,它可以由系统上可执行文件的加载器初始化,而无需运行任何代码。如果它是用一些代码初始化的,例如a = my_init_func();,那将在main().

既然a是一个静态成员,为什么它可以被定义两次NULL并“在这里初始化”?</p>

第二个是赋值,而不是声明。

于 2013-09-19T19:40:40.120 回答