C ++静态对象中的类的静态数据成员和静态方法是什么?

时间:2017-09-16 15:23:35

标签: c++ static lifetime storage-duration

来自编程语言语用学,由Scott

  

对象生命周期通常对应于三个主体之一   存储分配机制,用于管理对象的空间:

     
      
  1. 静态对象被赋予一个绝对地址,该地址在整个程序的执行过程中保留。

  2.   
  3. 堆栈对象以后进先出顺序分配和释放,通常与子程序调用和返回一起使用。

  4.   
  5. 可以在任意时间分配和释放堆对象。它们需要更通用(且昂贵)的存储管理   算法
  6.   

是否有静态数据成员和类的静态方法     PLP书中的C ++静态对象?

在编译时或运行时分配静态数据成员和类的静态方法的存储吗?

他们在哪里分配?

感谢。

1 个答案:

答案 0 :(得分:1)

  

PLP书中C ++静态对象中的类的静态数据成员和静态方法是什么?

静态数据成员,是的。而函数内部的静态对象也是如此。也是在文件范围声明的对象。

  

在编译时或运行时分配静态数据成员和类的静态方法的存储吗?

如果通过分配,则表示内存分配,它们的内存占用量在编译时保留,并且链接器在链接时(或加载时的动态加载程序)实际在进程空间中分配空间。无论哪种情况,都要在运行时间之前。

但是,在调用main()函数之前,在运行时,在文件或类范围声明的静态对象是初始化

函数中定义的静态对象是不同的。它们在代码第一次流过它们时初始化。

  

他们在哪里分配?

链接器或加载器决定的位置。这可以通过编写自己的链接器脚本来影响(超出了我害怕的答案范围)。