mutable 关键字疑惑
书上说mutable是修饰成员变量为总是可修改的,即不可能为const,所以我做了一个测试,在类中设置一个成员为mutable然后设置一个修改此成员的函数,然后定义一个const对象,调用此函数,却发现此时编译会报错,但是当我将成员函数设置成const函数时,却能够正常运行并达到预期效果。对此现象,求相关解释?为何成员函数一定要是const才能编译通过呢?
[解决办法]
这个与mutable无关。
const对象当然只能调用const方法。
#include <iostream>
using namespace std;
class Foo {
public:
void set_bar(int val)
{
bar = val;
}
void set_bar_const(int val) const
{
bar = val;
}
private:
mutable int bar;
};
int main(int argc, char *argv[])
{
Foo foo;
foo.set_bar(0);
foo.set_bar_const(0);
const Foo cfoo(foo);
// cfoo.set_bar(0); 出错
cfoo.set_bar_const(0);
return 0;
}