作用域与生命周期
在C++语言中名字有作用域,对象(变量)有生命周期。
- 作用域
名字的作用域是程序文本的一部分,名字在其中可见。换句话说就是你什么时候可以看见它并找到它。 - 生命周期
指的是程序执行过程中该对象存在的一段时间。
如果不理解这两个概念那么我们一般会犯很多低级的错误。比如返回局部对象的引用等。
- 例1——返回局部数组或局部对象的引用(对生命周期概念不熟)
#include <iostream>
using namespace std;
//return local array
int* func1()
{
int a[10] = {
1, 2, 3};
return a;
}
//return local object reference
int &func2()
{
int x = 666;
return x;
}
int main()
{
int *p = func1()