ToB企服应用市场:ToB评测及商务社交产业平台
标题:
c++右值引用、移动语义、完美转发
[打印本页]
作者:
鼠扑
时间:
2023-12-9 03:03
标题:
c++右值引用、移动语义、完美转发
1. 左值、右值、左值引用以及右值引用
左值:一般指的是在内存中有对应的存储单元的值,最常见的就是程序中创建的变量
右值:和左值相反,一般指的是没有对应存储单元的值(寄存器中的立即数,中间结果等),例如一个常量,或者表达式计算的临时变量
int x = 10
int y = 20
int z = x + y
//x, y , z 是左值
//10 , 20,x + y 是右值,因为它们在完成赋值操作后即消失,没有占用任何资源
复制代码
左值引用:C++中采用 &对变量进行引用,这种常规的引用就是左值引用
右值引用:右值引用最大的作用就是让一个左值达到类似右值的效果(下面程序举例),让变量之间的转移更符合“语义上的转移”,以减少转移之间多次拷贝的开销。右值引用符号是&&。
例如,对于以下程序,我们要将字符串放到vector中,且我们后续的代码中不再用到x:
[code]std::vector vec;std::string x = "abcd";vec.push_back(x);std::cout
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4