C++中返回引用和返回值的区别
今天室友在研究返回引用和返回值的区别,呵呵,在网上GOOGLE了一下,这下明白了。
int set()
{
return a;
}
此时生成的是变量a的一个拷贝,即生成了一个临时变量,当这个变量使用完毕之后,变量就被销毁了,所以这种返回不能用作左值运算,如:set() = 5;这是不正确的。
int& set()
{
return a;
}
在第二个例子中,返回的是引用,那么,就相当于返回的是变量a的别名,就可以对该变量操作,如赋值等等。set() = 5;是正确的。
但是在引用返回时得注意一个问题,就是不能返回局部变量的引用,如:
int& set()
{
int a;
return a;
}
此时就会调用出错,因为a是临时变量,函数结束是就自动销毁了,不能再创建别名了。但是将int & 改成int就可以了。
转自:
http://icymarywei.blog.163.com/blog/static/127508102200992441232284/