现代C++中的移动语义和右值引用是C++11引入的重要特性,旨在优化资源管理和提升性能。这些特性允许资源的转移而非复制,特别是对于临时对象和大型对象。
1. 右值引用
右值引用是对临时对象的引用,它允许你修改临时对象。使用&&
来声明右值引用。
#include <iostream>
void rightValueReference() {
int&& rvalueRef = 10; // 右值引用
rvalueRef = 20; // 修改临时对象
std::cout << rvalueRef << std::endl; // 输出20
}
2. 移动构造函数
移动构造函数允许资源在对象之间转移。当源对象是一个右值时,移动构造函数会被调用。
#include <iostream>
#include <vector>
class MoveableClass {
public:
std::vector<int> data;
// 移动构造函数
MoveableClass(MoveableClass&& other) noexcept : data(std::move(other.data)) {
std::cout << "Move constructor called" << std::endl