盗衍 发表于 2025-6-2 23:26:25

C++11——右值引用&完美转发

总而言之,右值引用,完美转发,std::move()都是为了在程序运行过程中,避免变量多次重复的申请和释放内存空间,使用移动语义将申请的空间通过这几种方式进行循环使用,避免重新开辟新空间和拷贝浪费算力。
右值引用

一、什么是右值引用?

在 C++ 中:

[*]左值(Lvalue):有名字、有地址、可以被引用(如变量 x)
[*]右值(Rvalue):临时对象、没有名字、无法被再次引用(如字面值 5,表达式 x + y)
语法:

int&& r = 10; // r 是一个右值引用右值引用使用 && 定义。
二、为什么需要右值引用?

传统的 C++(C++03)只有拷贝语义,会频繁复制对象,性能开销大。
右值引用的目的:

[*]避免不必要的拷贝
[*]支持移动语义
三、右值引用与移动构造函数

来看一个例子:
#include #include using namespace std;class Buffer {public:    int* data;    size_t size;    Buffer(size_t s) : size(s) {      data = new int;      cout
页: [1]
查看完整版本: C++11——右值引用&完美转发