mutable用法通常用在变量声明前,如mutable int a;让类的常函数和常对象调用使用。
mutalbe的中文翻译是“可变的”,与const是反义词。
所以在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。
我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数就是常函数,一般会声明成const。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mutalbe来修饰。
#include<iostream>
using namespace std;
class Cube
{
public:
Cube()
{
}
void fun() const
//常对象
{
this->m_B=100;
}
int m_A;
mutable int m_B; //特殊成员 可被常函数调用
};
void test()
{
Cube C;
C.fun();
cout<<C.m_B<<endl;
const Cube C1; //常对象
C1.fun();
cout<<C1.m_B<<endl; //常对象可以访问常函数 和调用 mutable 特殊成员
}
int main()
{
test();
return 0;
}
以上代码中 变量int m_B 前加了mutable后 ,就可以被常函数fun()和常对象C1调用了。
最后更新时间:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。