Mutable关键字

假设我们新建一个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

posted @ 2020-04-20 21:16  Wangtn  阅读(170)  评论(0编辑  收藏  举报