📅  最后修改于: 2023-12-03 15:14:02.321000             🧑  作者: Mango
在C++中,类中的函数可以被声明为const
,以表示该函数不会修改类的成员变量。这种函数被称为“const成员函数”,并且可以通过对象的常量和非常量引用和指针进行调用。
在函数声明或定义中,将关键字const
放在函数参数列表后面的括号之前即可声明一个成员函数为const
。例如:
class MyClass {
public:
int getValue() const;
// ...
};
int MyClass::getValue() const {
// ...
}
需要注意的是,在类定义的声明和定义处都需要加上const
。
const成员函数具有以下特点:
mutable
关键字修饰的变量。const成员函数的主要应用场景是优化程序的性能和提高代码的可读性和健壮性。使用const修饰的成员函数可以避免意外修改对象的状态,增加了程序的安全性;而且,由于const成员函数不能修改对象的状态,它们在多线程并发操作中可以安全地共享。
下面是一个简单的示例,演示了如何使用const成员函数:
#include <iostream>
class MyClass {
public:
MyClass(int value) : m_value(value) {}
int getValue() const;
void setValue(int value);
private:
mutable int m_count = 0; // mutable成员变量
int m_value;
};
int MyClass::getValue() const {
++m_count; // mutable成员变量可以在const成员函数中修改
return m_value;
}
void MyClass::setValue(int value) {
m_value = value;
}
int main() {
const MyClass obj(42);
std::cout << obj.getValue() << std::endl; // 可以调用const成员函数
std::cout << obj.m_count << std::endl; // mutable成员变量被修改了
// obj.setValue(99); // 错误:不能调用非const成员函数
return 0;
}