全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++中的const关键字有什么用?(详细用法)

const在C++中核心作用是声明不可修改性,用于变量、指针、引用、成员函数等,确保只读语义,提升安全性、可读性与编译器优化能力,并构成const正确性的契约基础。

const 在 C++ 中的核心作用是**声明不可修改性**,它告诉编译器和程序员:这个值、对象、指针、引用或函数行为在特定作用域内是只读的。这种约束不仅提升代码安全性与可读性,还为编译器优化提供依据。

修饰变量和基本类型

最常见用法:定义编译期或运行期常量,防止意外修改。

  • const int x = 10; —— x 不能被重新赋值(编译期常量,若用字面量初始化且为整型,可能参与常量表达式)
  • int y = 5; const int z = y; —— z 是运行期常量(run-time const),值由 y 决定,但之后不可改
  • 建议用 constexpr 替代简单整型 const(如 constexpr int max_size = 100;),它更明确表示编译期常量

修饰指针:三种常见组合

const 和指针结合时,关键看 const 紧邻谁——左边?右边?这决定“什么不可变”。

  • int* const ptr1 = &x; —— 指针本身是 const(ptr1 不能指向别处),但 *ptr1 可改
  • const int* ptr2 = &x;int const* ptr2 = &x; —— 指针所指内容是 const(*ptr2 不可改),但 ptr2 可重新赋值
  • const int* const ptr3 = &x; —— 指针和其所指内容都不可变(双重只读)
  • 口诀:“左定值,右定址”(const 在 * 左边 → 值不可变;在 * 右边 → 地址不可变)

修饰引用

引用必须初始化,且天生不可重绑定,因此 const 修饰的是它所引用的对象:

  • const int& r = x; —— r 是 x 的只读别名,通过 r 不能修改 x;但 x 本身仍可被其他非 const 途径修改
  • 常用于函数参数:避免拷贝 + 防止修改实参,例如 void print(const std::string& s);
  • 允许绑定到临时对象(如 const int& r = 42;),延长其生命周期至引用作用域结束

修饰成员函数

加在函数声明末尾(int get() const;),表示该函数承诺不修改当前对象的任何非 mutable 成员:

  • const 成员函数内部不能调用非 const 成员函数,也不能修改非 mutable 数据成员
  • const 对象只能调用 const 成员函数;非 const 对象两者都可调用(编译器自动选择更匹配的重载)
  • mutable 成员可在 const 函数中修改(常用于缓存、计数器等逻辑上不影响对象“状态”的字段)
  • 重载时可仅靠 const 区分:例如 T& operator[] (size_t i);const T& operator[] (size_t i) const;

修饰返回值(较少见但有用)

控制函数返回后能否被修改或赋值:

  • const std::string getName() const; —— 返回值是 const,调用者不能对返回的临时 string 调用非 const 成员(如 getName().clear(); 非法)
  • 对内置类型(如 const int foo();)意义不大,因返回的是副本;但对类类型,可防止链式调用中的误操作
  • 注意:不要返回局部变量的 const 引用(悬垂引用),也不建议返回 const 值来阻止移动(反而禁用 move 语义)

基本上就这些。const 不是装饰,而是契约——它让接口意图清晰、减少 bug、支持 const 正确性设计。写代码时多问一句:“这里该不该、能不能改?” 答案往往是 const 的起点。


# c++  # 作用域  # print  # String  # 常量  # 成员函数  # 整型  # const  # 局部变量  # int  # void  # mutable  # 指针  # 接口  # operator  # 实参  # 对象  # bug  # 的是  # 链式  # 绑定  # 返回值  # 也不  # 都不  # 一句  # 可在  # 三种 


相关文章: 如何通过商城自助建站源码实现零基础高效建站?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  宝塔面板如何快速创建新站点?  建站主机解析:虚拟主机配置与服务器选择指南  建站主机如何选?高性价比方案全解析  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何快速搭建高效简练网站?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  图册素材网站设计制作软件,图册的导出方式有几种?  Swift中循环语句中的转移语句 break 和 continue  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  建站主机与服务器功能差异如何区分?  如何快速搭建虚拟主机网站?新手必看指南  网站插件制作软件免费下载,网页视频怎么下到本地插件?  深入理解Android中的xmlns:tools属性  如何在阿里云通过域名搭建网站?  如何在IIS中配置站点IP、端口及主机头?  名字制作网站免费,所有小说网站的名字?  如何高效利用亚马逊云主机搭建企业网站?  建站之星后台管理系统如何操作?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  如何在IIS中新建站点并配置端口与IP地址?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  建站主机如何安装配置?新手必看操作指南  模具网站制作流程,如何找模具客户?  如何彻底删除建站之星生成的Banner?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  平台云上自助建站如何快速打造专业网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何生成腾讯云建站专用兑换码?  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  焦点电影公司作品,电影焦点结局是什么?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何在阿里云部署织梦网站?  北京企业网站设计制作公司,北京铁路集团官方网站?  如何设计高效校园网站?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  如何快速登录WAP自助建站平台?  如何在Windows服务器上快速搭建网站?  建站之星各版本价格是多少?  定制建站哪家更专业可靠?推荐榜单揭晓  大型企业网站制作流程,做网站需要注册公司吗?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何通过网站建站时间优化SEO与用户体验?  建站上传速度慢?如何优化加速网站加载效率?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  如何在阿里云购买域名并搭建网站?  深圳防火门网站制作公司,深圳中天明防火门怎么编码? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。