成都网站建设设计

将想法与焦点和您一起共享

C++中volatile和mutable的区别有哪些-创新互联

这篇文章将为大家详细讲解有关C++中volatile和mutable的区别有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

10年积累的成都网站制作、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有怀化免费网站建设让你可以放心的选择与我们合作。

C++中修饰数据可变的关键字有三个:constvolatilemutableconst比较好理解,表示其修饰的内容不可改变(至少编译期不可改变),而volatilemutable恰好相反,指示数据总是可变的。mutablevolatile均可以和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;
 }
};

文章名称:C++中volatile和mutable的区别有哪些-创新互联
网址分享:http://chengdu.cdxwcx.cn/article/dgsici.html