如何使用mutable关键字

C++

方式/步调

  1. 1

    凡是类的获取函数城市设置const,为了防止当作员变量被点窜

    c2fdfc039245d688bbdcd679aac27d1ed31b2414.jpg
  2. 2

    假设此刻需要统计获取函数被挪用的次数,需要在获取函数添加累加计数,可是因为获取函数被const润色,无法对当作员变量进行点窜,会导致编译不经由过程

    d8f9d72a6059252d256a7ad93a9b033b5ab5b9ea.jpg
  3. 3

    这时辰可以对类的当作员变量添加关头字mutable来解决上一个步调的问题

    58ee3d6d55fbb2fb95b53fcf414a20a44723dc55.jpg
  4. 4

    调试运行的成果如下,添加的当作员变量可以在const函数中被点窜,并利用来进行统计

    d058ccbf6c81800a5261eed3bf3533fa838b4762.jpg
  5. 5

    mutable的另一个比力常用的场景就是多线程情况下的锁,起首界说私有的当作员变量mutex, 然后在获取函数中利用该锁来包管同步性

    0823dd54564e925895b9e1339282d158cdbf4e59.jpg
  6. 6

    可是编译的过程中,就会报如下所示的错误

    d8f9d72a6059252d246a7bd93a9b033b5ab5b9ea.jpg
  7. 7

    那么只要将当作员变量mutex前面添加mutable进行点窜就可以解决

    9f510fb30f2442a75eaa9b78df43ad4bd0130242.jpg
  8. 8

    最后再进行编译就可以或许经由过程,运行后输出正常的打印信息

    dcc451da81cb39dbcf83018bde160924aa1830af.jpg
  • 发表于 2019-08-18 21:04
  • 阅读 ( 718 )
  • 分类:其他类型

0 条评论

请先 登录 后评论
联系我们:uytrv@hotmail.com 问答工具