左右值引用
- 左值引用:对等式
int a = 5的a的引用,如int& b = a;(const的左值引用是可以引用右值的,如const int& b = 5) - 右值引用:对上面等式中的
5的引用,如int&& b = 5; 注意到右指引用其实是左值,左值通过move变成右值- 完美转发:经过forward转发的量是不会改变左右值属性的:
#include<iostream> template<typename T> void print(T & t) { std::cout<<"左值"<<std::endl; } template<typename T> void print(T && t) { std::cout<<"右值"<<std::endl; } template<typename T> void testForward(T && v) { print(v); print(std::forward<T>(v)); print(std::move(v)); } int main() { testForward(1); std::cout << "======================" << std::endl; int x = 1; testForward(x); return 0; }

浙公网安备 33010602011771号