C++类中 函数后面加const 是什么意思
在C++中,函数后加const关键字表示该函数是一个常量成员函数(const member function),它承诺不会修改调用对象的非静态数据成员(除非成员被声明为mutable)。1百科
核心含义与语法
- 仅适用于成员函数:
const后缀只能用于类的非静态成员函数,普通函数(非成员函数)不能使用。34 - 语法位置:在成员函数的声明和定义中,
const关键字置于参数列表之后,例如int getValue() const;。5 - 对this指针的影响:
const成员函数中的this指针类型为const ClassName* const,指向的对象不可被修改。5
主要作用
- 支持const对象调用:const对象(如
const MyClass obj;)只能调用const成员函数,这是C++类型安全的重要机制。1百科 - 增强代码安全性:编译器会检查const成员函数内部是否试图修改非mutable成员变量,防止意外修改,提升代码健壮性。67
- 明确函数行为:标记为const的成员函数向开发者清晰表明该函数不会改变对象状态,提高代码可读性和可维护性。
- 使用注意事项
- 重载规则:const成员函数可与同名的非const成员函数构成重载,编译器根据调用对象的常量性选择合适版本(const对象调用const版本,非const对象优先调用非const版本)。5
- 调用限制:const成员函数内部不能调用非const成员函数(避免间接修改对象),但非const成员函数可以调用const成员函数。5
- mutable例外:若成员变量被声明为
mutable,则即使在const成员函数中也可以修改其值,常用于缓存、计数等逻辑状态变量。45 - 返回类型注意:const成员函数若返回成员变量的引用,应返回const引用以避免通过返回值意外修改数据。5
