Avatar ·

لماذا نحتاج إلى الكلمة المفتاحية mutable في C++؟ فقط لـ const-методов؟

مرحبًا بالجميع! أنا أتعلم C++ وقد صادفت الكلمة المفتاحية `mutable`. في الكتب المدرسية، يُكتب أنها تسمح بتغيير عضو في الكلاس حتى داخل `const`-методов. لكن يبدو لي هذا غريبًا — لماذا نغير شيئًا في метод تم وضع علامة عليه كـ const؟ ألا ينتهك هذا فكرة الثبات نفسها؟ إليك مثال كتبته: ```cpp class Counter { private: mutable int accessCount = 0; int value = 0; public: int getValue() const { accessCount++; // يعمل بسبب mutable return value; } int getAccessCount() const { return accessCount; } }; ``` أفهم أن `accessCount` هو عداد لعدد مرات الوصول إلى getter. لكن أليس من الأفضل إزالة `const` من метод `getValue()`؟ أو استخدام `const_cast`؟ يبدو لي أن `mutable` هو نوع من "ثغرة" تجعل الكود أقل قابلية للتنبؤ. أرجو التوضيح، هل هناك استخدامات أخرى لـ `mutable`؟ أم أن هذا هو السيناريو الوحيد؟ ربما أفتقد شيئًا ما؟