C++ 左值右值,指针引用

发布时间:2026/11/13 2:00:48
C++ 左值右值,指针引用 指针 引用特性引用 (Reference)指针 (Pointer)本质变量的别名语法糖底层通常就是指针实现存储内存地址的独立变量初始化必须在定义时初始化绑定对象定义时可以不初始化但建议初始化为nullptr绑定关系绑定关系不可变更终身绑定到初次初始化的对象可以随时修改指向新的内存地址空值安全性语法上不能为 null始终假设绑定有效对象可以为nullptr使用前必须判空如if(p)语法与解引用自动隐式解引用直接像普通变量一样使用必须通过*p或p-显式解引用访问内存占用局部位优化为 0 开销作为参数/成员时占 4/8 字节占用固定的指针尺寸32位系统占 4 字节64位系统占 8 字节悬垂风险无空指针风险但若绑定的对象提前析构依然会产生悬垂引用存在空指针、野指针以及悬垂指针风险典型用途函数参数传递避免拷贝且语法简洁、运算符重载动态内存管理new/delete、多级指针、可选参数传nullptr表示无值引用的绑定关系指向不可改变”但“被引用对象内部的值”是可以修改的除非是const引用左值右值当一个右值被绑定到右值引用形参T arg上时在函数内部这个形参arg自身就变成了左值左值Lvalue有变量名、生命周期持久可以通过 获取内存地址如变量名、解引用 *p、返回引用的函数右值Rvalue无变量名、临时存在即将销毁无法直接取地址如字面量 42、临时对象 std::string(“a”)、返回非引用的函数inta10;// a 是左值intx1020;// 10 20 是右值std::string shello;// hello 是右值左值引用 右值引用特性左值引用 (T)右值引用 (T)绑定对象只能绑定左值const T除外可绑右值只能绑定右值临时对象、std::move的返回值核心用途避免函数传参/返回时的深拷贝资源窃取移动语义与完美转发内存与身份绑定后继续作为左值使用绑定的形参在函数内部会变成左值因为有了名字典型示例int a 10; int ref a;int rref 42;右值引用的使用移动语义偷取资源std::vectorint v1 {1, 2, 3}; // std::move(v1) 将 v1 强转为右值触发 vector 的移动构造函数 std::vectorint v2 std::move(v1); // v2 偷走 v1 的堆内存0 拷贝完美转发保持原始属性templatetypename T void wrapper(T arg) { // T 此时是万能引用Universal Reference // std::forward 确保传入的是右值就按右值转发左值就按左值转发 target(std::forwardT(arg)); }

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询