MST

星途 面试题库

面试题:C++中const修饰成员函数的作用及注意事项

在C++中,使用const修饰成员函数有什么作用?这种函数在访问类成员变量时有哪些限制?请举例说明。
25.6万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 使用const修饰成员函数的作用
    • 表明函数不会修改对象的状态const修饰的成员函数承诺不会改变对象的成员变量(除了声明为mutable的成员变量),这有助于编译器检测无意的修改操作,增强程序的健壮性。
    • 区分函数重载:可以与非const版本的同名成员函数形成重载,使代码能够针对const对象和非const对象提供不同的行为。
  2. 这种函数在访问类成员变量时的限制
    • 只能访问const类型的成员变量或者mutable类型的成员变量。不能修改非mutable类型的成员变量。
  3. 举例说明
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成员变量的值,但不能修改它(除非datamutable类型),不过可以修改mutable类型的accessCount变量。而setData函数是非const成员函数,可以修改dataaccessCount变量。