c++ 左值引用的注意点
2021-04-14 15:27
标签:内存 swap 局部变量 amp clone 注意 pre 创建 没有 1. 左值引用在下列情况下会产生临时变量,函数中的引用则是临时变量的引用,并不是原变量的引用 以上三种情况下,会产生临时变量,并让引用指向临时变量,但必须注意,要在函数引用出加上const才可以允许临时变量的产生; 再看下面这个例子: 由于类型不同,这种情况下由于创建了临时变量引用,导致是在临时变量上做的swap,相当于按值传递了! (*以上代码引用处没有const也可以的原因是早期编译器是可以允许没有const的情况下产生临时变量的,但是现在的编译器必须指定const引用) 2. 传统函数返回值是先创建临时变量,再复制给被调用函数中的接收变量,这种机制效率很慢; 而返回引用的话,不会创建临时变量,直接将引用变量复制给接收变量,效率高。 3. 返回引用类型的函数,返回的变量值不能是局部变量,函数终止时局部变量的内存不复存在。如下: 为了解决这个问题,可以:① 外部定义引用,把引用传给函数再返回;②用new来分配新的内存空间,并返回指针的*ptr,但是需要注意的是用delete在外部释放; c++ 左值引用的注意点 标签:内存 swap 局部变量 amp clone 注意 pre 创建 没有 原文地址:https://www.cnblogs.com/liutianrui1/p/13336625.htmldouble refcube(const double &ra){
return ra*ra*ra;
}
//case 1.
double c1=refcube(7.0);
//case2
long edge=5L;
double c2=refcube(edge);
//case 3.
double side=3.0;
double c2=refcube(side+5.0);
void swapr(int &a ,int &b){
int temp;
temp=a;
a=b;
b=temp;
}
long a=3,b=5;
swapr(a,b);
const free_throws & clone2(free_throws & ft){
free_throws newguy=ft;
return newguy;
}