Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

คีย์เวิร์ด mutable ใน C++


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;
}