zixie1991 / cplusplus-exercise

C++编程练习。。。
8 stars 1 forks source link

C++11 右值引用 #1

Open zixie1991 opened 7 years ago

zixie1991 commented 7 years ago

C++11右值引用

左值和右值

在C语言中,左值是可以出现在=左边或右边的表达式,右值是只能出现在=右边的表达式

在C++中,左值是一个指向某内存空间的表达式,且可以通过&取得该内存空间的地址,右值是非左值的表达式(所有具名的变量或对象都是左值,而右值不具名)

在C++中,左值可被绑定到非const引用,左值或者右值则可被绑定到const引用

右值引用

编译器会将已命名的右值引用视为左值,而将未命名的右值引用视为右值

引用折叠

引用折叠:引用的引用

移动语义 std::move

std::move:将一个左值转换为右值

只有右值引用的右值引用会折叠成右值引用,其他的都会折叠成左值引用

完美转发 std::forward

将按照参数原来的类型转发到另一个函数