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调用了。
最后更新时间:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。