c++ 左值右值 万能引用
时间: 2023-08-29 15:13:50 浏览: 240
C++中的左值和右值
5星 · 资源好评率100%
左值和右值是表达式的两个分类。左值可以被取地址,右值不能被取地址。在C++11中,引入了一个新的引用类型——"万能引用"(也称为"右值引用"),使用“&&”表示,它既可以绑定左值也可以绑定右值,是一种比较特殊的引用类型。
在函数模板中,使用万能引用可以实现完美转发。完美转发的意思是,将一个函数的参数以原样传递给另一个函数,而不会失去其左值或右值性质。
下面是一个使用万能引用实现完美转发的示例:
```c++
template<typename T>
void func(T&& arg)
{
other_func(std::forward<T>(arg));
}
```
在上述代码中,`T&&`表示一个万能引用类型的参数。使用`std::forward`函数可以将这个参数以原样传递给`other_func`函数。这样做可以保证参数的左值或右值性质不会丢失,从而避免了不必要的拷贝操作。
阅读全文