假设我们新建一个const类,并且想要通过类内方法直接原封不动地返回成员变量m_Name,此时代码使用const不会有任何问题,但是如果我还想要通过一个常量来记录debug的次数,此时就需要用到mutable

#include<iostream>
#include<string>

class Entity
{
private:
    std::string m_Name;
    mutable int m_DebugNum = 0;
public:
    const std::string &GetName() const
    {
        m_DebugNum++;
        return m_Name;
    }
};
int main()
{
    const Entity e;
    e.GetName();
    std::cin.get();
}

因为我在int main()中创立的e是const类型,要是去掉类内GetName()方法后面的const,那么主函数中的e.GetName()将会出错,因为e是常量,而e的这个方法却无法保证不改变成员变量,要是不去掉,则const函数无法改变成员变量,此时就需要用到mutable关键字

另一个mutable的用法是lamda表达式,是c++11的新特性

https://www.cnblogs.com/IamTing/p/4541901.html

相关文章:

  • 2021-12-28
  • 2021-12-30
  • 2021-09-05
  • 2022-12-23
  • 2021-06-03
  • 2022-12-23
猜你喜欢
  • 2021-11-17
  • 2021-06-25
  • 2022-12-23
  • 2022-03-03
相关资源
相似解决方案