几句话讲清楚右值引用

What

  1. 右值引用是C++11引入的引用类型
  2. 通过&&来声明
  3. 表示临时对象和将要被移动的对象
  4. 只能绑定到右值(临时对象 字面量 constexpr等)
  5. 可以修改它绑定的状态

How

#include 

void processValue(int& val) {
	std::cout << "Lval ref: " << val << std::endl;
}

void processValue(int&& val) {
	std::cout << "Rval ref: " << val << std::endl;
	val = 6;
	std::cout << "Rval ref: " << val << std::endl;
}

int main() {
	int x = 5;
	processValue(x);   // 绑定左值引用
	processValue(10);  // 绑定右值引用
}

运行结果为

Lval ref: 5
Rval ref: 10
Rval ref: 6

Why

右值引用可以实现

  • 移动语义:在不进行深拷贝的情况下将资源从一个对象转移到另一个对象
  • 完美转发:以原样传参,避免多次重载函数

你可能感兴趣的:(c++)