C++中的const成员函数和mutable关键字

在C++中,如果一个类的成员函数不会改变这个类的成员变量的值,我们通常将这样的函数声明称const成员函数。例如,

1 classDummy
2 {
3  protected:
4   // 成员变量声明
5 public:
6   ...
7   void foo() const;  // 这个函数不会改变成员变量的值,因此声明称const函数
8   ...
9 };

在编写和使用const成员函数的时候需要知道几点规则:

a.const对象只能访问const成员函数,不能访问非const函数。
b. const对象的成员是不可修改的,然而const对象通过非const指针维护时,就变成可以修改的了。

c.const成员函数不可以修改对象的数据,不管对象是否具有const性质。它在编译时,以是否修改成员数据为依据,进行检查。

e.然而加上mutable修饰符的数据成员,对于任何情况下通过任何手段都可修改,自然此时的const成员函数是可以修改它的。

原文地址:https://www.cnblogs.com/lilei9110/p/1825549.html