右值引用move
对于所调用的函数里面的临时变量,在函数调用过程中是被压到程序进程的栈中的,当函数退出时,临时变量出栈,即临时变量已经被销毁,临时变量占用的内存空间没有被清空,但是已经可以被分配给其他变量了,所以有可能在函数退出时,该内存已经被修改了,对于临时变量来说已经是没有意义的值了。
int&& fun(int &&n) { int num1 = n+1; int num2 = move(num1); //临时变量拷贝到num2 return move(num2); //num为局部变量,函数返回出栈为临时变量。(临时变量和局部变量是同一个) //return num; //错误,num为左值 } int main() { int a = 5; fun(a+1); //正确,a+1 为表达式,临时变量 //fun(a); //错误,a为变量,左值 int&& num = fun(4); //右值引用,临时变量长时间驻留 }
坚持就是胜利

浙公网安备 33010602011771号