不能返回局部变量的引用
2013-10-21 09:13
134 查看
源之: http://topic.csdn.net/u/20090228/11/6e244583-3651-484f-9d23-d89be17fb7f9.html?seed=1750224547
int add1(int a, int b)
{
int sum;
sum = a + b;
return sum;
}
int& add2(int a, int b)
{
int sum;
sum = a + b;
return sum;
}
请问这两个函数返回有什么区别,是一个返回副本,另一个直接返回吗?
调用函数add2有什么危险吗?
add1的确返回了一个副本,如果sum是自定义的类类型,可以很明显看出拷贝构造函数在返回时被调用,对于内建类型没什么开销。
add2返回了一个局部变量的地址,这当然是有问题的,sum在栈上的,在add2函数退出后sum变量就消失了,不知道这样的解释是否正确。
不能返回局部对象的引用。
int add1(int a, int b)
{
int sum;
sum = a + b;
return sum;
}
int& add2(int a, int b)
{
int sum;
sum = a + b;
return sum;
}
请问这两个函数返回有什么区别,是一个返回副本,另一个直接返回吗?
调用函数add2有什么危险吗?
add1的确返回了一个副本,如果sum是自定义的类类型,可以很明显看出拷贝构造函数在返回时被调用,对于内建类型没什么开销。
add2返回了一个局部变量的地址,这当然是有问题的,sum在栈上的,在add2函数退出后sum变量就消失了,不知道这样的解释是否正确。
不能返回局部对象的引用。
相关文章推荐
- 不能返回局部变量的引用
- 千万不能返回局部变量的引用??
- 方法可以返回局部变量的引用
- 关于函数不能返回局部对象的引用或者局部对象的指针
- 不能返回局部对象的引用
- C#7.0之ref locals and returns (局部变量和引用返回,之前欠大家的,现在补上)
- Block中循环引用、局部变量不能修改的一些理解
- 了解临时对象的来源 (深刻理解为什么不能返回一个临时变量的引用)
- 为什么不能从子函数中返回临时对象的指针和引用,却可以返回一个临时变量的值
- C#7.0之ref locals and returns (局部变量和引用返回,之前欠大家的,现在补上)
- C#7.0之ref locals and returns (局部变量和引用返回,之前欠大家的,现在补上)
- 引用与局部变量的返回问题
- C++不能返回string&局部引用
- 不能返回函数内部new分配的内存的引用
- C#7.0之ref locals and returns (局部变量和引用返回,之前欠大家的,现在补上)
- 不能编写返回引用可变对象的访问器方法
- const 类型的函数不能返回非const类型的引用
- 实战c++中的string系列--函数返回局部变量string(引用局部string,局部string的.c_str()函数)
- 返回局部变量的引用
- 清屏函数 %*d 函数返回数组名 返回局部变量的引用