C++中如何可以修改const函数内的成员变量的值?

Posted 流星小子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中如何可以修改const函数内的成员变量的值?相关的知识,希望对你有一定的参考价值。


呵呵,你使用mutable关键字来定义变量就可以了。
下面举例说明


C++关键字mutable

Mutable

(1)mutable的意思是“可变的,易变的”,跟C++中的const是反义词。

(2)在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中

实例说明:

复制代码
#include <iostream>
using namespace std;

class TestMutable
{
public:
TestMutable(){i=0;}
int Output() const
{
return i++; //error C2166: l-value specifies const object
}
private:
int i;
};

int main()
{
TestMutable testMutable;
cout<<testMutable.Output()<<endl;
return 0;
}
复制代码
显然i++在const修饰的函数里是编译通不过的。

复制代码
#include <iostream>
using namespace std;

class TestMutable
{
public:
TestMutable(){i=0;}
int Output() const
{
return i++;
}
private:
mutable int i;
};

int main()
{
TestMutable testMutable;
cout<<testMutable.Output()<<endl;
return 0;
}
复制代码
在 int i 前面加上 mutable上面就能编译通过了,马上可以看出关键字mutable的作用了。

以上是关于C++中如何可以修改const函数内的成员变量的值?的主要内容,如果未能解决你的问题,请参考以下文章

c++ const

C++中explicit const mutablestatic关键字

C++常成员函数

C++常成员函数

C++特殊成员

C/C++类和对象类中常用的关键字总结