const
الثوابت وحماية القيم const
const تمنع تعديل قيمة متغيّر أو معامل أو دالة عضو بعد تعريفها — أداة أساسية لكود آمن وواضح النية.
const تخبر المترجم أن هذه القيمة لا يجب أن تتغيّر، فإذا حاول أي كود تعديلها يرفض المترجم البناء بالكامل بدل ما يظهر الخطأ وقت التشغيل. تُستخدم مع المتغيرات، معاملات الدوال (خصوصًا const T& لتفادي نسخ الكائنات الكبيرة)، ودوال أعضاء الأصناف لضمان أنها لا تغيّر حالة الكائن.
قاعدة عملية شائعة بمجتمع C++: ضع const بكل مكان ممكن، وأزلها فقط لما تحتاج فعليًا للتعديل — هذا يقلّل الأخطاء بشكل كبير بمشاريع كبيرة.
الصياغة
const Type name = value; ReturnType func(const Type& param) const;
📄 مثال
const double PI = 3.14159;
void printName(const std::string& name) {
// name مضمون انه ما راح يتعدّل جوا الدالة
std::cout << name;
}
class Circle {
double radius;
public:
double area() const { return PI * radius * radius; } // const بعد التوقيع
};أهم النقاط
| العنصر | الوظيفة |
|---|---|
| const T value | متغيّر ثابت لا يمكن إعادة تعيينه بعد التهيئة |
| const T& param | تمرير بالمرجع بدون نسخ مع منع التعديل — الأشيع بمعاملات الدوال |
| method() const | يضمن أن دالة العضو لا تعدّل أعضاء الكائن |
| constexpr | أقوى من const — يفرض حساب القيمة وقت الترجمة نفسه |
💡 نصائح عملية
- مرّر الكائنات الكبيرة (خصوصًا std::string وstd::vector) بـ const T& دائمًا بدل النسخ
- ضع const بعد توقيع أي دالة عضو لا تحتاج تعديل حالة الكائن — يفتح استخدامها على كائنات const
⚠️ أخطاء شائعة
- نسيان const بمعامل مرجعي كبير الحجم يسبب نسخًا غير ضروري يبطّئ البرنامج
- محاولة استدعاء دالة غير const على كائن const — خطأ ترجمة يحيّر المبتدئين
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CPP الكامل بالعربي.