C ++编程语言中的可变数据成员

可变数据成员是可以随时更改的成员;即使对象是const类型。它与“ const”相反。有时,我们只需要使用一个或两个数据成员作为变量,而另一个则用作常量。在这种情况下,可变对管理类非常有帮助。

为了使数据成员可变,我们需要使用可变关键字。它是用C ++语言内置的。

C ++中可变数据成员的示例

#include <iostream>
using namespace std;

class Sample
{
	int x;
	mutable int y;

	public:
	Sample(int a=0, int b=0)
	{ x=a; y=b;}

	//设置x值的功能
	void setx(int a=0)
	{x = a;}

	//设置y值的功能
	//即使成员函数不变,y的值也会更改。
	void sety(int b=0) const
	{y = b;}


	//显示x和y的功能。
	//如果成员函数是常量类型,则必须为const类型。
	void display() const
	{
		cout<<endl<<"x: "<<x<<" y: "<<y<<endl;
	}
};

int main(){
	const Sample s(10,20); //const对象

	cout<<endl <<"Value before change: ";
	s.display();

	s.setx(100);  //错误:由于对象是常量,因此无法更改x。
	s.sety(200);  //y仍然可以更改,因为y是可变的。

	cout<<endl<<"Value after change: ";
	s.display();
	
	return 0;
}

在此程序中,语句s.setx(100); 会产生一个错误,但是语句s.sety(200); 将不会。

因此,很明显,我们只能更改y的值(因为可变),而不能更改x的值。