mutable 关键字
作者:互联网
- const 关键字 用于类的成员函数,成为常成员函数,即:不允许在常成员函数的内部 (实现里) 修改数据成员的值。
- mutable 关键字 用于类的成员函数,即:允许在常成员函数的内部 (实现里) 修改数据成员的值。
mutable 的中文意思是 可变的、易变的,const (常量、常数)的意思,他们俩也就是反义词。 mutable 也就是为了突破const的,被mutable 修饰的变量,是处于可变的状态,在类中的常成员函数中,是不能修改数据成员的(在成员函数中,如果函数实现里不修改数据成员(对象的内部状态,也就是成员变量),最好声明为const),但是,也难免会在const 成员函数中去修改数据成员,那么这时就要将该数据成员用mutable修饰。
下面的示例代码来解释说明:
#include<iostream>
using namespace std;
class A
{
public:
A():a(2),b(2.5){} //列表初始化
void get_a() const; //常成员函数
void get_b() const; //常成员函数
private:
mutable int a; //a 被 mutable 修饰
float b;
};
void A::get_a() const
{
cout << a << endl; //2
a = 9; //a 被修饰为mutable类型,a在常成员函数里,能修改a的值(能修改该数据成员)
//b=5.5; //b 不是mutable类型,所以这里去修改b是错误的
cout << a << endl; //9
}
void A::get_b() const
{
cout << b << endl; //2.5
//b=5.5; //b 不是mutable类型,所以这里去修改b是错误的
}
int main()
{
A Aa;
Aa.get_a();
Aa.get_b();
return 0;
}
如有错误或不足地方,还望前辈们指点。
标签:const,函数,get,成员,关键字,mutable,void 来源: https://blog.csdn.net/weixin_45931556/article/details/118733269