C++中mutable关键字详解与实战

mutable关键字详解与实战
在c++中mutable关键字是为了突破const关键字的限制,被mutable关键字修饰的成员变量永远处于可变的状态,即使是在被const修饰的成员函数中。
在c++中被const修饰的成员函数无法修改类的成员变量,成员变量在该函数中处于只读状态。然而,在某些场合我们还是需要在const成员函数中修改成员变量的值,被修改的成员变量与类本身并无多大关系,也许你会说,去掉函数的const关键字就行了。可问题是,我只想修改某个变量的值,其他变量希望仍然被const关键字保护。
现在有个场景,我们想获取函数被调用的次数,代码如下:
class widget{ public: widget(); ~widget() = default; int getvalue() const; int getcount() const; private: int value; int count; };
这里我们想要获取getvalue函数被调用次数,普遍的做法是在getvalue函数里对成员变量count进行加1处理,可是getvalue被关键字const修饰啊,无法修改count的值。这个时候mutable派上用场了!我们用mutable关键字修饰count,完整代码如下:
#include 《iostream》 class widget{ public: widget(); ~widget() = default; int getvalue() const; int getcount() const; private: int value; mutable int count; }; widget::widget() : value(1), count(0) { } int widget::getvalue() const{ count++; return value; } int widget::getcount() const{ return count; } int main() { widget w1; for(int i = 0; i 《 5; i++){ w1.getvalue(); } std::cout 《《 w1.getcount() 《《 std::endl; return 0; }
被mutable修饰的成员变量count在getvalue函数里进行加1计数,编译运行输出如下:
5
既保护了其他成员变量,又能达到我们单独修改成员变量count值的目的。


零线接地会怎么样
年度爆品!NANK南卡新款真无线蓝牙耳机NANK lite首销!
企业如何从IT资产的可见性中受益
什么是boot loader?
英创信息技术基于WEC7的多核系统编程方法
C++中mutable关键字详解与实战
为什么共识算法对于加密货币至关重要
外媒:中国欲打造自己的安全智能手机
华为P10闪存门最新消息:魅族李楠抨击华为P10,用野菜换了韭菜
以无线动能开关为事业能有保障的经营发展下去吗?
开关电源中高频磁性元件设计常见错误概念辨析
美国发现同位素抑制散热法,可提高太阳能电池发电效率
中国联通联合3Glasses 推动5GXR生态联盟
焊锡丝焊接时出现拉尖连焊怎么办
平升电子:4G DTU替换GPRS DTU需要注意哪些问题?
瑞萨推出用于工业以太网通信的RZ/N2L微处理器
驱动电机产品价格走低 市场机会依旧大
马化腾:腾讯不做芯片 国产芯片距离腾讯很远?
禹山CDOM传感器的测定方法及原理
2015半导体成长转负!台积电英特尔大减支出三星逆向操作