c++ const关键字用法 c++ const作用与位置【汇总】

const是C++中表达不可修改语义与接口契约的关键字,用于修饰变量(需初始化)、指针(三种组合,口诀“左定值,右定址”)、成员函数(承诺不修改对象状态,可被const对象调用)、引用及参数(避免拷贝且保证只读)。

c++ const关键字用法 c++ const作用与位置【汇总】

const 是 C++ 中用于声明“不可修改”的核心关键字,它不只表示“常量”,更关键的是表达接口契约编译期约束。用对位置、理解作用域,才能写出安全、高效、易维护的代码。

const 修饰变量:值不可变

最基础用法,声明后不能通过该标识符修改值(编译期检查):

  • int const x = 10;const int x = 10; —— 等价,x 是只读整数
  • 必须初始化:const int y; ❌ 报错;const int y = 5;
  • 底层内存未必只读(如 const_cast 可绕过),但逻辑上禁止修改,违反会引发未定义行为

const 修饰指针:三种常见组合

指针本身可变/不可变、指针所指内容可变/不可变,由 const 位置决定:

  • int* const p1 = &a; —— 指针常量:p1 不能指向别处,但 *p1 可改
  • const int* p2 = &a;int const* p2 = &a; —— 常量指针:p2 可换指向,但 *p2 不可改
  • const int* const p3 = &a; —— 指针和所指内容都不可变
  • 口诀:“左定值,右定址”——const 紧邻 * 左边 → 所指内容不可变;const 紧邻 * 右边 → 指针本身不可变

const 成员函数:承诺不修改对象状态

加在成员函数声明末尾,表示该函数不会修改 this 指向对象的任何非 mutable 成员:

OmniAudio

OmniAudio

OmniAudio 是一款通过 AI 支持将网页、Word 文档、Gmail 内容、文本片段、视频音频文件都转换为音频播客,并生成可在常见 Podcast ap

下载

立即学习C++免费学习笔记(深入)”;

  • int getValue() const { return val; } —— 可被 const 对象调用,也可被非 const 对象调用
  • const 对象只能调用 const 成员函数:const MyClass obj; obj.getValue(); ✅;obj.setValue(5); ❌(若 setValue 非 const)
  • mutable 成员可在 const 函数中修改(常用于缓存、计数器等不影响逻辑状态的场景)

const 引用与 const 参数:避免拷贝 + 保证安全

函数参数中广泛使用 const 引用,兼顾效率与只读语义:

  • void print(const std::string& s); —— 避免 string 拷贝,且函数内不能修改 s
  • 接受字面量、临时对象:print(“hello”); ✅(普通引用不允许绑定临时量)
  • 返回 const 引用需谨慎:确保返回对象生命周期长于调用方,否则悬垂引用

https://www.php.cn/faq/1968182.html

发表回复

Your email address will not be published. Required fields are marked *