1、const有点像类和结构体的可见性
const基本上就像我们做出的承诺,承诺某些东西将是不变的
2、关键字mutable
mutable int var;
如果我们把变量设为mutable,即使在const方法中,我们也可以修改var这个变量
即mutable允许函数是常量方法,但可以修改变量
mutable实际上有两种不同的用途,其中之一,是与const一起使用,另一种是用在lambda表达式中国,或者同时覆盖这两者
3、lambda就像是一个一次性的小函数,我们可以写出来并且赋值给一个变量
#include <iostream>
#include<string>
class Entity
{
private:
std::string m_Name;
mutable int m_DebugCount = 0;
public:
const std::string GetName() const //这里的const意味着我们不允许修改实际的类成员
{
//m_Name = "chrno" //所以我们不可以在这里对m_Name重新赋值
m_DebugCount++; //但是由于m_DebugCount已经被mutable修饰,所以可以对它修改
return m_Name;
}
};
int main()
{
const Entity e;
e.GetName();
int x = 8;
auto f = []() mutable
{
x++;
std::cout<<"Hello"<<std::endl;//这就是一个lambda式子
}
}