ماذا يعني const في نهاية إعلان دالة عضو في فئة في C++؟
مرحبًا بالجميع! بدأت تعلم C++ بعد Python وJava، وواجهت بناء جملة غير مفهوم. في كود شخص آخر، أرى غالبًا أن الكلمة المفتاحية `const` تأتي بعد إعلان دالة عضو في فئة. على سبيل المثال:
```cpp
class MyClass {
public:
int getValue() const; // هذا const في النهاية
void setValue(int v);
};
```
أفهم أن `const` قبل المتغير تعني أن المتغير لا يمكن تغييره. لكن ماذا يعني `const` *بعد* قائمة المعاملات؟ جربت كتابتها بدونها — لم يشتكِ المترجم. إذن لماذا هي مطلوبة؟ هل تؤثر على كيفية استدعائي للدالة؟ هل يمكن وضعها لأي دوال؟ أم فقط للـ getters؟
كتبت فئة بسيطة:
```cpp
class Counter {
public:
Counter() : count(0) {}
int getCount() const { return count; } // يعمل
void increment() { count++; } // يعمل
private:
int count;
};
```
لكن عندما جربت كتابة `void increment() const { count++; }` — أخطأ المترجم. لماذا؟