C++中的右值引用是一种特殊的引用类型,它允许我们识别并绑定到临时对象(也就是右值)。右值引用在C++11中被引入,主要用于支持移动语义和完美转发。以下是右值引用的一些主要区别和特点:
int&& rvalue_ref = 42; // 右值引用
int& lvalue_ref = 42; // 普通引用
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = std::move(vec1); // 使用右值引用实现移动语义
template <typename T>
void wrapper(T&& arg) {
// arg 可以是左值或右值,可以是const或非const
}
class MyClass {
public:
MyClass(MyClass&&) = delete; // 禁用拷贝构造函数
MyClass& operator=(MyClass&&) = delete; // 禁用拷贝赋值运算符
};
总之,C++中的右值引用提供了一种强大的机制,用于支持移动语义和完美转发,从而提高了代码的性能和可维护性。