const用于定义不可修改的变量、指针、函数参数及成员函数,增强程序安全与可读性。1. 修饰基本类型时需初始化,值不可变;2. 与指针结合有三种形式:指向常量的指针、常量指针、指向常量的常量指针,语义各异;3. 函数参数加const避免意外修改,返回值为const可防止链式赋值;4. const成员函数承诺不修改成员变量,仅能被const对象调用;5. const引用避免拷贝并保护数据,可绑定临时对象。合理使用const提升代码安全性与维护性。

在C++中,const关键字用于定义“不可修改”的变量、指针、函数参数、成员函数等,其核心作用是增强程序的安全性和可读性。它不仅仅是一个简单的只读修饰符,更是一种编程契约,告诉编译器和其他开发者:某个值或行为不应被改变。
1. const修饰基本数据类型
当const用于修饰变量时,表示该变量的值不能被修改。
例如:const int a = 10; a = 20; // 编译错误!a是常量,不可修改
这种变量称为常量,必须在定义时初始化。使用const代替宏定义(如#define)可以提高类型安全和调试能力。
2. const与指针的结合使用
const和指针结合时有多种写法,含义不同,容易混淆,需特别注意。
立即学习“C++免费学习笔记(深入)”;
-
指向常量的指针(pointer to const):
const int* p;或int const* p;
指针指向的内容不能改,但指针本身可以指向其他地址。 -
常量指针(const pointer):
int* const p = &x;
指针本身不能修改(即不能指向别的地址),但可以通过它修改所指内容。 -
指向常量的常量指针:
const int* const p = &x;
既不能修改指针指向,也不能通过指针修改值。
3. const用于函数参数和返回值
在函数中使用const可以防止意外修改传入的参数。
例如:void print(const std::string& str) {
// str不能被修改,适合大对象传递,避免拷贝
}
对于传引用或传指针的参数,加上const能保证函数不会修改原始数据。
函数返回值为const时,通常用于防止赋值操作,比如:
const int getValue();
// 这样写一般意义不大,但在自定义类型中可能用于禁止 (a = b) = c 这类链式赋值
4. const成员函数
成员函数后加const,表示该函数不会修改类的成员变量。
class MyClass {
int value;
public:
int getValue() const {
return value; // 只读操作
}
};
只有const成员函数才能被const对象调用。这在设计接口时非常有用,有助于实现逻辑上的只读访问。
5. const与引用
const引用常用于函数参数传递,既能避免拷贝开销,又能防止修改原值。
void func(const std::vector& vec);
还可以绑定临时对象或右值:
const int& ref = 10; // 合法,延长临时对象生命周期
基本上就这些。const不只是“只读”,它是C++中实现数据保护、接口清晰和优化编译的重要工具。正确使用const,能让代码更安全、更易维护。不复杂但容易忽略细节,建议养成习惯,凡是不打算修改的变量或参数,尽量加上const。











