c++ mutable const

C++中的mutable关键字

ぃ、小莉子 提交于 2020-11-21 11:49:31
转(http://no001.blog.51cto.com/1142339/389840/) mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。   在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。   我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mutalbe来修饰。   下面是一个小例子: class ClxTest {  public:   void Output() const; }; void ClxTest::Output() const {  cout << "Output for test!" << endl; } void OutputTest(const ClxTest& lx) {  lx.Output(); }   类ClxTest的成员函数Output是用来输出的,不会修改类的状态,所以被声明为const的。   函数OutputTest也是用来输出的,里面调用了对象lx的Output输出方法,为了防止在函数中调用其他成员函数修改任何成员变量,所以参数也被const修饰。