其他分享
首页 > 其他分享> > mutable 关键字

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