#include <iostream>
#include <string>
//mutable (关键字):一种是搭配const应用(绕开const限制改变变量值),另一种是lambda表达式中应用
class Entity
{
private:
std::string m_Name;
mutable int m_DebugCount=0;//mutable意味着,const标记的类中这个变量可以修改
public:
const std::string& GetName()const
{
m_DebugCount++;
return m_Name;
}
};
int main()
{
const Entity e;
e.GetName();//常量用常量函数
//lambda表达式
int x=8;
//& 按引用传递
// auto f=[&]()
// {
// x++;
// std::cout<<x<<std::endl;
// };
// = 按值传递 相当于是copy
auto f=[=]()mutable
{
//本应该这样写,但是可以用关键字改写mutable
// int y=x;
// y++;
x++;//但是不是按照引用修改,因此,x的值还是8
std::cout<<x<<std::endl;
};
f();
std::cout<<x<<std::endl;
std::cin.get();
}
C++:mutable关键字的两种应用方式
最新推荐文章于 2024-07-20 22:49:13 发布