C++ 学习笔记
C++ mutable
- 总的来说
mutable
有两种用法,让我们来看看
用法1
- 用于修饰
class
的成员变量,使其在const函数中也可以修改1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Entity
{
private:
std::string name;
mutable int count = 0; // 用于记录GetName函数被调用类多少次
public:
const std::string& GetName() const
{
count++; // 这个函数为const, 如果 count 不是mutable, 则不可以++
return name;
}
};
// 程序的主函数
int main( )
{
const Entity e;
std::cout << e.GetName() << std::endl;
std::cin.get();
return 0;
}
用法1
- 配合
lambda
使用 - lambda 表达式用于定义并创建匿名的函数对象
- 这个不怎么用得到
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Entity
{
private:
std::string name;
mutable int count = 0; // 用于记录GetName函数被调用类多少次
public:
const std::string& GetName() const
{
count++; // 这个函数为const, 如果 count 不是mutable, 则不可以++
return name;
}
};
// 程序的主函数
int main( )
{
const Entity e;
std::cout << e.GetName() << std::endl;
int x = 8;
auto f = [=]() mutable
{
x++;
std::cout << "Hello" << std::endl;
std::cout << x << std::endl;
};
f();
// x=8; 上面函数是对x的一个拷贝
std::cin.get();
return 0;
}