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的值。