মিউটেবল ডেটা মেম্বার হলো সেসব মেম্বার যাদের মান রানটাইমে পরিবর্তন করা যায় এমনকি অবজেক্ট কনস্ট্যান্ট টাইপের হলেও। এটি কনস্ট্যান্টের ঠিক বিপরীত।
কখনো কখনো লজিকের জন্য শুধু এক বা দুই ডেটা মেম্বার ভেরিয়েবল হিসেবে এবং অন্যটি কনস্ট্যান্ট হিসেবে ব্যবহার করা দরকার হয় ডেটা হ্যান্ডেল করার জন্য। সেক্ষেত্রে, মিউটেবিলিটি ক্লাস ম্যানেজ করার জন্য খুব সহায়ক কনসেপ্ট।
উদাহরণ
#include <iostream>
using namespace std;
class Test {
public:
int a;
mutable int b;
Test(int x = 0, int y = 0) {
a = x;
b = y;
}
void seta(int x = 0) {
a = x;
}
void setb(int y = 0) {
b = y;
}
void disp() {
cout << endl << "a: " << a << " b: " << b << endl;
}
};
int main() {
const Test t(10, 20);
cout << t.a << " " << t.b << "\n";
// t.a = 30; // এরর হবে কারণ a পরিবর্তন করা যাবে না, কারণ অবজেক্ট কনস্ট্যান্ট।
t.b = 100; // b এখনও পরিবর্তন করা যায়, কারণ b mutable।
cout << t.a << " " << t.b << "\n";
return 0;
}