在块作用域中会定义全局变量吗
在块作用域中能定义全局变量吗?在一个函数的实现中中能定义一个全局变量吗?[解决办法]函数内的 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构造函数的类实例)时开始,到(完成析构,如果需要的话且)空间被释放或者被重用是结束。
全局变量就是在全局作用域内定义的变量。
楼主真正关心的是对象的生命周期。