成员函数中的 C++ 静态变量

标签 c++ object static

<分区>

所以对于这样的代码:

class foo{
  void bar(){
     static int var = 2;
  }
};

我知道对于 foo 类型的所有对象,只有一个 var 的实例,但 C++ 是否为变量 var 分配内存,甚至在创建 foo 之前?我问这个是因为即使在 foo 被销毁之后,var 仍将存在于整个程序中。

最佳答案

does C++ allocate memory for variable var even before foo is created?

是的,从某种意义上说,var 的值最终将占用的内存是预先保留的。 2 的常量值何时写入var 的内存是实现定义的。标准唯一保证的是它会在您调用 foo::bar() 之前的某个时刻发生。

如果您使用具有副作用的表达式初始化静态变量(例如,通过调用函数),将在您第一次执行该函数时执行此调用。

after foo has been destroyed, var will exist throughout the program.

var 将独立于您的程序可能创建的任何 foo 实例而存在。当您随时调用 foo::bar() 时,您将获得程序分配给它的 var 的最后一个值。

关于成员函数中的 C++ 静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25796758/

相关文章:

php - 取消设置对象 PHP 的所有实例

C#,实现 'static abstract'之类的方法

c++ - 游戏引擎 "Frostbit 3"是用什么编程语言编写的?

C++继承加运算符

c++ - 将 float 存储为 short int。令人困惑的结果

c++ - C++ (Visual Studio 6) 中 operator< 和 operator[] 的默认返回值是什么?

javascript - 获取最小值的键

c++ - 创建类对象时出错

c++ - 如何在bitset上完成C++11编译时类静态成员初始化?

php - 应该存储在 session 中的数据量