首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

在块作用域中会定义全局变量吗

2013-07-11 
在块作用域中能定义全局变量吗?在一个函数的实现中中能定义一个全局变量吗?[解决办法]函数内的 static 量,

在块作用域中能定义全局变量吗?
在一个函数的实现中中能定义一个全局变量吗?
[解决办法]
函数内的 static 量, 只能在这个函数内访问到, 
其他地方要是访问, 你的返回那个地址.

比如单例可以这样.


CBook* getA()
{
  static CBook* pBook = NULL;
  if (!pBook) {
    pBook = new CBook();
  }
  return pBook;
}


[解决办法]
不可以 
然后 别把生存期和作用域混淆了 
不是生存期是整个程序运行期的对象都是全局对象 
真是要命
[解决办法]
scope(作用域), storage duration(存储生存期), object lifetime(对象生命周期)是不同的概念。 

scope可以分为: 名字空间(比如std), 类作用域,块作用域, 函数原型作用域。 
storage duration分为: static duration, automatic storage duration, dynamic storage duration, tsl。 
对象生命周期从分配了空间(且完成构造--对于有non-trivial构造函数的类实例)时开始,到(完成析构,如果需要的话且)空间被释放或者被重用是结束。 

全局变量就是在全局作用域内定义的变量。 

楼主真正关心的是对象的生命周期。  

热点排行