如果想达到一个类的成员函数不能修改类的成员变量,只需用 const 关键字来修饰该函数即可。该问题本质是考察 const 关键字修饰成员函数的作用,只不过以实例的方式来考察,面试者应熟练掌握 const 关键字的作用。同时 C++ 还存在与 const 相反的关键字 mutable。被 mutable 修饰的变量,将永远处于可变的状态,即使在一个 const 函数中。如果我们需要在 const 函数中修改类的某些成员变量,这时就需要用到 mutable。
使用 mutable 的注意事项:
C++
#include <iostream>
using namespace std;
class A
{
public:
mutable int var1;
int var2;
A()
{
var1 = 10;
var2 = 20;
}
void fun() const // 不能在 const 修饰的成员函数中修改成员变量的值,除非该成员变量用 mutable 修饰
{
var1 = 100; // ok
var2 = 200; // error: assignment of member 'A::var1' in read-only object
}
};
int main()
{
A ex1;
return 0;
}
我们可以看到在 const 函数中, mutable 修饰的变量可以修改,否则则不能修改。
阅读量:1096
点赞量:0
收藏量:0