c++中的const关键字用法总结 常量成员和常量函数【代码规范】

9次阅读

const 本质是表达“不可修改性”的契约,贯穿变量、指针、函数参数、成员函数及返回值;正确使用可提升安全性、可读性与编译器优化能力。

c++ 中的 const 关键字用法总结 常量成员和常量函数【代码规范】

const 在 C++ 中不只是“定义常量”那么简单,它本质是表达“不可修改性”的契约,贯穿变量、指针、函数参数、成员函数、返回值等各环节。用好 const 能提升代码安全性、可读性和编译器优化空间,也是专业 C++ 代码规范 的重要体现。

const 变量与常量表达式

声明后不可修改的变量,必须初始化;若用于数组大小、模板非类型参数等场景,则需是编译期可知的常量表达式(constexpr 更严格):

  • int const x = 42; // 等价于 const int x = 42;
  • constexpr int N = 10; // 编译期常量,可用于 int arr[N];
  • const int y; // ❌ 错误:未初始化

const 指针与指针 const —— 位置决定含义

const 修饰的是紧邻其 ** 左侧 ** 的类型(若左侧无类型,则修饰右侧),关键分清“指针本身不可变”还是“指针所指内容不可变”:

  • int* const p1 = &x; // p1 不可改指向(指针 const),但 *p1 可改
  • const int* p2 = &x; // *p2 不可改(内容 const),但 p2 可改指向
  • const int* const p3 = &x; // 两者都不可改

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

在成员函数声明末尾加 const,表示该函数不会修改类的任何非 mutable 成员。这使 const 对象也能调用它,并支持 const 引用 / 指针调用:

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

  • int getValue() const { return val;} // ✅ 合法:只读访问
  • void setValue(int v) {val = v;} // 非 const 函数
  • void foo() const { val++;} // ❌ 错误:试图修改非 mutable 成员
  • mutable int cache; // 可在 const 函数中修改

const 参数与返回值:明确接口契约

函数参数用 const 引用或指针,避免意外修改且避免拷贝开销;返回 const 值通常无意义(临时对象本就不能赋值),但返回 const 引用 / 指针可防止赋值或修改底层数据:

  • void process(const std::string& s); // 推荐:安全 + 高效
  • const std::string& getName() const; // 允许返回引用,禁止通过返回值修改
  • const int getID() const; // 不推荐:const 返回值对内置类型无实际作用
星耀云
版权声明:本站原创文章,由 星耀云 2025-12-30发表,共计1034字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources