C++的右值引用如下:
int && key = 10;
其中,key就是一个右值引用。该语句的作用是将10关联到了右值引用key。
该语句会导致10存储在一个特定的内存地址,并且可以根据key来获取该地址。
右值引用是为了解决移动语义,也就是以下问题:
vector<int> vIntsA;
对vIntsA添加了1000个数据;
vector<int> vIntsB(vIntsA);
在vIntsB的构造过程中,会首先new1000个int出来,然后将vIntsA的1000个数据复制过来。一般情况下,这样是容易理解的。
但若将代码改为:
vector<int> vIntsB(allcaps(vIntsA));
allcaps()会创建一个temp对象,其中有1000个int数据;然后vIntsB的构造函数会new1000个int出来,将temp对象复制给vIntsB,然后删除temp对象。
考虑到temp仅仅是个临时对象,因此这里做了大量的无用功。
所以,若可以将temp创建的数据直接转让给vIntsB,则会省去大量的时间。即,直接将temp的数据与vIntsB关联,然后删除temp与数据的链接。而在整个过程中,数据始终处于原来的位置。类似指针。
C++右值引用与移动语义
362

被折叠的 条评论
为什么被折叠?



