右值引用和移动语义

前置

在 C++ 中,右值引用(Rvalue Reference) 和移动语义(Move Semantics) 是 C++11 引入的核心特性,旨在解决「临时对象拷贝的性能开销」和「资源转移」问题,同时完善值类别体系

一、前置

首先需明确 C++ 的「值类别」------ 所有表达式可分为左值(Lvalue) 和右值(Rvalue):

类型 特征 示例
左值 有名称、可取地址、持久存在 变量(int a)、this、返回左值引用的函数
右值 无名称、不可取地址、临时存在 字面量(10,"hello")、临时对象(string("abc"))、返回值的函数

二、右值引用(&&):绑定右值的引用

1.定义

右值引用是一种特殊的引用类型,语法为T&&,专门用于绑定右值(临时对象、字面量等),无法绑定左值(除非用std::move转换)。

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    // 右值引用绑定临时对象(右值)
    string&& rref = string("hello"); 
    cout << rref << endl; // 输出 hello

    string s = "world";
    // string&& rref2 = s; // 编译报错:不能绑定左值到右值引用
    string&& rref2 = move(s); // 用std::move将左值转为右值引用(将亡值)
    return 0;
}
相关推荐
程序员-King.5 小时前
day158—回溯—全排列(LeetCode-46)
算法·leetcode·深度优先·回溯·递归
月挽清风6 小时前
代码随想录第七天:
数据结构·c++·算法
小O的算法实验室6 小时前
2026年AEI SCI1区TOP,基于改进 IRRT*-D* 算法的森林火灾救援场景下直升机轨迹规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
小郭团队7 小时前
2_1_七段式SVPWM (经典算法)算法理论与 MATLAB 实现详解
嵌入式硬件·算法·硬件架构·arm·dsp开发
充值修改昵称7 小时前
数据结构基础:从二叉树到多叉树数据结构进阶
数据结构·python·算法
Deepoch7 小时前
Deepoc数学大模型:发动机行业的算法引擎
人工智能·算法·机器人·发动机·deepoc·发动机行业
浅念-7 小时前
C语言小知识——指针(3)
c语言·开发语言·c++·经验分享·笔记·学习·算法
Hcoco_me8 小时前
大模型面试题84:是否了解 OpenAI 提出的Clip,它和SigLip有什么区别?为什么SigLip效果更好?
人工智能·算法·机器学习·chatgpt·机器人
BHXDML8 小时前
第九章:EM 算法
人工智能·算法·机器学习
却道天凉_好个秋9 小时前
目标检测算法与原理(三):PyTorch实现迁移学习
pytorch·算法·目标检测