Mutable data members (สมาชิกข้อมูลที่เปลี่ยนแปลงได้) คือสมาชิกที่ค่าสามารถเปลี่ยนแปลงได้ในรันไทม์ (runtime) แม้ว่าอ็อบเจ็กต์จะเป็นชนิด constant (const) ก็ตาม มันตรงข้ามกับ constant
บางครั้งตรรกะต้องการให้ใช้เพียงหนึ่งหรือสองสมาชิกข้อมูลเป็นตัวแปร และอีกตัวเป็นค่าคงที่เพื่อจัดการข้อมูล ในสถานการณ์นั้น ความสามารถในการเปลี่ยนแปลง (mutability) เป็นแนวคิดที่ช่วยจัดการคลาสได้ดี
ตัวอย่าง
#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; // Error เกิดขึ้นเพราะ a ไม่สามารถเปลี่ยนได้ เนื่องจากอ็อบเจ็กต์เป็น constant
t.b = 100; // b ยังเปลี่ยนได้ เพราะ b เป็น mutable
cout << t.a << " " << t.b << "\n";
return 0;
}