为什么我的构造函数被一遍又一遍地调用?

时间:2010-08-27 15:51:16

标签: static namespaces instance

我有以下h文件:

#ifndef GLOBAL_DATA_H_
#define GLOBAL_DATA_H_

class GlobalData
{
  public:
    GlobalData();
    ...
  private:
    ...
};

namespace global_data
{
  static GlobalData globalDataInstance;
}

#endif

无数文件包含上面的头文件,并访问global_data :: globalDataInstance。如果我在GlobalData的构造函数体中放置断点,我会看到,当我运行应用程序时,构造函数会被无数次调用。这是为什么?

1 个答案:

答案 0 :(得分:0)

根据这篇文章,似乎在命名空间内声明静态变量并不符合我的想法:

http://bytes.com/topic/c/answers/134682-initializing-static-variable-inside-namespace

  

如果您将此标题包含在更多内容中   你会得到一个源文件   多个变量。如果你改变了   你在一个文件中变量的值   不会看到另一个的变化   文件。

看起来属性要做的是使用extern而不是static来声明命名空间变量。