Presupuesto plegable, reenvío y reenvío perfecto

1 colapso de referencia

1.1 Plegado de referencia

De acuerdo con las referencias de valor y las referencias de valor, podemos organizar cuatro combinaciones:

Referencia de valor de referencia de valor de referencia

Referencia de lvalue Referencia de lvalue

Referencia de valor de referencia de valor de referencia

Referencia de valor de referencia de valor de referencia

Pero cuando realmente codificamos, si hay una referencia citada, el compilador lo informará sin reservas, por lo que C ++ 11 tiene la teoría del plegado de referencia.

Regla de plegado de referencia: cuando ocurre una referencia de valor, es una referencia de valor después del plegado, de lo contrario es una referencia de valor

 

2 std :: adelante

2.1 adelante

	int  t = 10;

	//如果想将t转换为左值,<>中就使用 类型&
	int &a = std::forward<int&>(t);

	//如果想将t转换为右值,<>中就使用 类型
	int &&b = std::forward<int>(t);

hacia adelante se puede utilizar para lograr un reenvío perfecto 

3 std :: mover

3.1 movimiento

#include<iostream>
using namespace std;

void func(int&& t)
{
	cout << "func函数" << endl;
}

int main()
{
	int && t = 7;  //7是一个右值,所以t是一个右值引用,但是对于t本身他是一个左值
	//func(t);  //报错,因为func形参需要一个右值,但是传入的实参却是一个左值
	
	func(std::move(t));  //move可以强制将一个左值转换为右值

	return 0;
}

 

123 artículos originales publicados · 31 elogiados · 90,000 vistas +

Supongo que te gusta

Origin blog.csdn.net/qq_40794602/article/details/103226360
Recomendado
Clasificación