const用于声明不可修改的变量或对象,提供只读保护。它替代宏定义实现类型安全的常量定义,并与指针结合形成指向常量的指针、常量指针及二者兼具的形式,语义由const位置决定。const可用于函数参数、返回值和成员函数,防止数据被修改,确保接口安全,其中const成员函数可被const对象调用。类中const成员变量需在构造函数初始化列表中赋值,静态const成员变量需类外定义(c++11支持内联定义)。const不仅是语法约束,更是表达设计意图、提升代码安全性与可读性的关键机制。

在C++中,const关键字用于声明不可修改的变量或对象,实现数据的只读保护。它不仅是简单的“常量定义工具”,更是一种语义约束机制,帮助程序员编写更安全、可读性更强的代码。合理使用const能提升程序的健壮性和编译期优化能力。
const修饰基本数据类型变量
用const修饰变量后,该变量成为编译时常量(或运行时初始化常量),不能被修改。
例如:
const int value = 10;
// value = 20; // 错误:不能修改const变量
这种定义方式替代了宏定义#define,避免预处理带来的副作用,同时支持类型检查。
立即学习“C++免费学习笔记(深入)”;
const与指针的结合使用
const和指针结合时有多种写法,语义不同,需特别注意:
- const int* p:指向常量的指针,值不能改,指针可以改
- int* const p:常量指针,指针本身不能改,指向的值可以改
- const int* const p:指向常量的常量指针,两者都不能改
记忆技巧:const紧邻哪边,就修饰哪边。若const在*左边,修饰值;在右边则修饰指针本身。
const在函数中的应用
const可用于函数参数、返回值以及成员函数,增强接口安全性。
例如:
class MyClass {
public:
int getValue() const { return data; } // 不会修改成员
private:
int data;
};
只有const成员函数才能被const对象调用。
const与类成员变量
类中的const成员变量必须在构造函数的初始化列表中赋值,不能在函数体内赋值。
class Test {
public:
Test(int x) : val(x) {} // 正确:初始化列表
private:
const int val;
};
静态const成员变量还需在类外定义一次(C++11起支持内联定义)。
基本上就这些。const不只是“不让改”的符号,更是表达设计意图的重要手段。掌握其各种用法,能让代码更清晰、更安全。