ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

stl 右引用

2026/8/14 5:08:13 拓冰建站 浏览量
stl 右引用

右值

int a=10;
int b=10;
int c=a+b;

左值往往代存储空间
右值: a+b 仅在运行过程中存在

__asm{mov eax,amov ebx,badd eax,ebxmov c,eax
}

右值a+b 在操作完之后就销毁了,匿名无固定地址。

右值引用

int a =10, b=20;
const int& i = a+b;
int&& right=a+b;  //通过 &&进行右值引用,使得右值持久化
cout<< right << endl;
cout<< ++right;

临时资源无需拷贝

   //  移动构造(转移资源)BetterString(BetterString&& other) {data = other.data;       // “偷”指针other.data = nullptr;    // 防止 other 析构时 delete}

模板参数类型推导

解决临时对象效率问题

/*
std::move:
T&& move(T& val)
返回参数的右值引用
*/
template<typename T>
void fwd(T&& x) {foo(std::forward<T>(x));  // 完美转发
}int main() {int a = 10;fwd(a);        // 调用 foo(int&) —— 保留左值fwd(42);       // 调用 foo(int&&) —— 保留右值fwd( std::move(a) );  // 实参类型:int&&(右值)
}