在c++中函数可以被赋值吗,之前我一直认为函数只等当做右值被赋值给其他左值对象,其实函数也是可以作为左值对象,但是函数在某些情况下是可以作为左值对象的。
这当然需要理解普通的函数为什么不能被赋值?首先被赋值的对象是左值对象,而左值对象必须是持久的,而不是一个临时对象。而函数的返回值是一个临时对象,所以它的内存空间在函数调用后将会被销毁。为了保证函数的返回值不是临时变量,需要保证返回值是一个固定的内存空间,即生命周期比较长。所以需要全局或者静态变量作为函数的返回值。在函数返回的过程中,将会进行拷贝,为了对这个变量阻止拷贝,所以返回值需是一个引用。
int x=3;
int& f(){
return x;
}
int main(){
f()=5;
cout<<x<<endl;
}
好好理解吧。
重点内容