静态数据成员和全局变量之间的区别

时间:2017-05-19 07:26:23

标签: c++

此问题的变化也可能早先提出过。这个问题是关于静态数据成员vs全局变量而不是静态变量vs全局变量。

我们所有人都知道静态数据成员和全局变量的作用。编译器如何链接它们,它们在内存布局中的映射,它们的默认值等。当我想到它们时,我没有清楚地了解我们应该使用静态数据成员而不是全局变量的可能情况。

我想到了一个用例,你想要计算为类创建的对象数。每当创建新对象时,您都会创建一个静态数据成员并增加ctor。但同样的想法,我们也可以用全局变量做同样的事情,计算创建的对象。

所以,到目前为止我还不清楚使用静态数据成员与全局变量的用例是什么?

1 个答案:

答案 0 :(得分:2)

它们的范围不同:

  • static数据成员可以具有可见性限制public / protected / private
  • 可以不受限制地修改全局变量
  • static(全局)变量只能在文件范围内修改。