这篇文章将为大家详细讲解有关C++中volatile和mutable的区别有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
10年积累的成都网站制作、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有怀化免费网站建设让你可以放心的选择与我们合作。C++中修饰数据可变的关键字有三个:const
、volatile
和mutable
。const
比较好理解,表示其修饰的内容不可改变(至少编译期不可改变),而volatile
和mutable
恰好相反,指示数据总是可变的。mutable
和volatile
均可以和const
搭配使用,但两者在使用上有比较大差别。
mutable
mutable
只能作用在类成员上,指示其数据总是可变的。不能和const
同时修饰一个成员,但能配合使用:const修饰的方法中,mutable修饰的成员数据可以发生改变,除此之外不应该对类/对象带来副作用。
考虑一个mutable
的使用场景:呼叫系统中存有司机(Driver)的信息,为了保护司机的隐私,司机对外展现的联系号码每隔五分钟从空闲号码池更新一次。根据需求,Driver类的实现如下伪代码:
class Driver { private: ... // real phone number string phone; // display phone number mutable string displayPhone; public: string getDisplayPhone() const { if (needUpdate()) { lock.lock(); if (needUpdate()) { updateDisplayPhone(); // displayPhone在这里被改变 } lock.unlock(); } return displayPhone; } };