全网整合营销服务商

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

免费咨询热线: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  # 的是  # 链式  # 绑定  # 返回值  # 也不  # 都不  # 一句  # 可在  # 三种 


相关文章: 临沂网站制作企业,临沂第三中学官方网站?  Python如何创建带属性的XML节点  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何在万网自助建站中设置域名及备案?  高端企业智能建站程序:SEO优化与响应式模板定制开发  建站之星导航配置指南:自助建站与SEO优化全解析  建站之星免费模板:自助建站系统与智能响应式一键生成  如何配置IIS站点权限与局域网访问?  北京网站制作的公司有哪些,北京白云观官方网站?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  常州企业建站如何选择最佳模板?  如何通过老薛主机一键快速建站?  建站主机服务器选型指南与性能优化方案解析  桂林网站制作公司有哪些,桂林马拉松怎么报名?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  如何通过虚拟主机快速完成网站搭建?  javascript基本数据类型及类型检测常用方法小结  微信小程序 input输入框控件详解及实例(多种示例)  建站与域名管理如何高效结合?  如何使用Golang安装API文档生成工具_快速生成接口文档  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  如何快速完成中国万网建站详细流程?  如何通过建站之星自助学习解决操作问题?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  详解jQuery停止动画——stop()方法的使用  如何通过服务器快速搭建网站?完整步骤解析  建站主机选哪家性价比最高?  如何用VPS主机快速搭建个人网站?  建站之星免费版是否永久可用?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  如何正确选择百度移动适配建站域名?  广州建站公司哪家好?十大优质服务商推荐  网站设计制作公司地址,网站建设比较好的公司都有哪些?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  网页设计与网站制作内容,怎样注册网站?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  如何在IIS7中新建站点?详细步骤解析  南京网站制作费用,南京远驱官方网站?  北京企业网站设计制作公司,北京铁路集团官方网站?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  建站主机如何选?性能与价格怎样平衡?  网站制作新手教程,新手建设一个网站需要注意些什么?  如何登录建站主机?访问步骤全解析 

您的项目需求

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