C++ const关键字详解:变量、指针与类成员用法
C++中的const关键字用于定义常量,旨在限制数据修改以提升程序安全性。本文系统解析const在变量初始化、指针类型区分(常量指针与指针常量)、函数签名修饰以及类成员(成员函数、成员变量、常对象)中的具体用法,并结合代码示例说明其行为边界。
基本变量与指针修饰
第1步:定义const基本变量
const修饰的基本变量必须在声明时初始化,且后续不可修改。这有助于保护关键配置或硬编码值,防止意外篡改。
const int a = 100;
a = 1000; // 编译错误:无法修改const变量
const int b; // 编译错误:未初始化const变量
第2步:理解三种指针模式
指针与const的组合是C++学习的难点,核心在于判断const位于*的左侧还是右侧。
(1)常量指针(Pointer to Constant) 指向常量的指针。指针本身可变(可指向其他地址),但所指向的内容不可修改。
const int *p = &g;
int s = 200;
p = &s; // 允许:改变指针指向的地址
*p = 10000; // 错误:试图修改指向的内容
(2)指针常量(Constant Pointer) 指针本身是常量,一旦初始化后不可更改指向,但可以修改其所指向内存中的值。
int *const p = &g;
p = &s; // 错误:指针本身不可重新赋值
*p = 10000; // 允许:修改指向的内容
(3)常量指针常量(Constant Pointer to Constant) 既不可改变指向,也不可通过该指针修改内容。
const int *const p = &g;
p = &s; // 错误:指针不可变
*p = 10000; // 错误:内容不可变
函数与作用域修饰
第3步:修饰函数返回值与参数
在函数中使用const主要用于强制约束:
- 返回值
const:通常用于返回指针或引用时,禁止调用者直接修改返回值指向的对象。 - 参数
const:表明该参数在函数体内只读,防止意外修改传入的数据。
// 返回指向常量的指针
const int* func();
// 参数只读
void process(const int a, const int *data);
类中的const应用
第4步:const成员函数
在成员函数声明后加const,意味着该函数承诺不修改对象的任何状态(非mutable成员)。
- 约束条件:const成员函数不能修改非static、非mutable的成员变量;也不能调用非const成员函数。
- this指针本质:在const成员函数中,
this指针的类型变为Type* const(指针本身不可改)加上顶层const,即const Type* const。
class Person {
public:
void ShowPerson() const {
m_A = 100; // 错误:const函数不可修改普通成员
m_B = 100; // 正确:m_B被mutable修饰,可修改
}
mutable int m_B; // 可变成员,即使在const对象/函数中也可修改
private:
int m_A;
};
第5步:const类对象(常对象)
声明为const的对象,其所有成员均视为只读。只能调用该类的const成员函数。
const Person person;
person.m_A = 100; // 错误:常对象不可修改普通成员变量
person.m_B = 100; // 正确:mutable成员可在常对象中修改
以上就是C++关键字const使用方法详解的详细内容,更多关于C++ const指针、常对象与mutable特性的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













