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值的目的。
责任编辑:haq
原文标题:C++ mutable关键字如何使用?
文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
C++程序异常的处理机制
Temu跨境电商按关键字搜索Temu商品API的应用及接口请求示例
哪些场合会用到volatile关键字?
天眼查平台关键字搜索企业数据API接口技术指南
1688平台关键字搜索商品API接口技术实践指南
亚马逊平台根据关键字搜索商品API接口
简单的内联汇编介绍
亚马逊 SP-API 深度开发:关键字搜索接口的购物意图挖掘与合规竞品分析
【上海晶珩睿莓1开发板试用体验】将TensorFlow-Lite物体归类(classify)的输出图片移植到LVGL9.3界面中
阿里巴巴开放平台关键字搜索商品接口实战详解:OAuth2.0 认证落地 + 检索效率优化(附避坑代码)
阿里巴巴国际站关键字搜索 API 实战:从多条件筛选到商品列表高效获客

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