لماذا نحتاج إلى الكلمة المفتاحية 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`؟ أم أن هذا هو السيناريو الوحيد؟ ربما أفتقد شيئًا ما؟