所以对于像这样的代码:
class foo{
  void bar(){
     static int var = 2;
  }
};
我知道只有在var所有类型对象的实例上,foo但是var在创建foo之前C++是否为变量分配内存?我问这个是因为即使在foo被销毁之后,var也会在整个程序中存在.
var即使在创建foo之前,C++是否为变量分配内存?
是的,从某种意义上说,它var最终会占用的内存是预先保留的.当2写入var内存的常量值是实现定义的.标准保证唯一的事情是它会在你打电话之前的某个时刻发生foo::bar().
如果使用带副作用的表达式初始化静态变量(例如,通过进行函数调用),则在第一次执行函数时将执行此调用.
在foo被销毁之后,var将在整个程序中存在.
var将独立于foo您的程序可能创建的任何实例而存在.当您foo::bar()随时致电时,您将获得var您的程序分配给它的最后一个值.
| 归档时间: | 
 | 
| 查看次数: | 376 次 | 
| 最近记录: |