C++ const关键字详解:变量、指针与类成员用法

山间有风
山间有风
发布时间:2026-10-15 | 4人浏览过
原创

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特性的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表