Avatar ·

ماذا يعني 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++; }` — أخطأ المترجم. لماذا؟