面试题答案
一键面试- 使用
const
修饰成员函数的作用:- 表明函数不会修改对象的状态:
const
修饰的成员函数承诺不会改变对象的成员变量(除了声明为mutable
的成员变量),这有助于编译器检测无意的修改操作,增强程序的健壮性。 - 区分函数重载:可以与非
const
版本的同名成员函数形成重载,使代码能够针对const
对象和非const
对象提供不同的行为。
- 表明函数不会修改对象的状态:
- 这种函数在访问类成员变量时的限制:
- 只能访问
const
类型的成员变量或者mutable
类型的成员变量。不能修改非mutable
类型的成员变量。
- 只能访问
- 举例说明:
class Example {
private:
int data;
mutable int accessCount;
public:
Example(int value) : data(value), accessCount(0) {}
// const成员函数,不能修改非mutable成员变量
int getData() const {
accessCount++;
// data = 10; // 错误,不能在const成员函数中修改非mutable成员变量
return data;
}
// 非const成员函数,可以修改成员变量
void setData(int value) {
data = value;
accessCount++;
}
};
在上述代码中,getData
函数是const
成员函数,它可以读取data
成员变量的值,但不能修改它(除非data
是mutable
类型),不过可以修改mutable
类型的accessCount
变量。而setData
函数是非const
成员函数,可以修改data
和accessCount
变量。