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

คลาสการจัดเก็บ mutable ใน C++

ตัวระบุคลาสการจัดเก็บ mutable ใช้ได้เฉพาะกับ data member ของคลาส เพื่อทำให้มันสามารถแก้ไขได้ แม้ว่า member นั้นจะเป็นส่วนของ object ที่ประกาศเป็น const คุณไม่สามารถใช้ mutable specifier กับชื่อที่ประกาศเป็น static หรือ const หรือ reference members ได้

ใน ตัวอย่าง ต่อไปนี้:

class A {
    public:
    A() : x(4), y(5) { };
    mutable int x;
    int y;
};
int main() {
    const A var2;
    var2.x = 345;  // OK
    // var2.y = 2345; // Error
}

คอมไพเลอร์จะไม่อนุญาตการกำหนดค่า var2.y = 2345 เพราะ var2 ถูกประกาศเป็น const แต่วคอมไพเลอร์จะอนุญาต var2.x = 345 เพราะ A::x ถูกประกาศเป็น mutable