this
المؤشّر this this
this مؤشّر ضمني متاح داخل كل دالة عضو غير static، يشير إلى الكائن الحالي الذي استُدعيت الدالة عليه.
لما تستدعي دالة عضو على كائن (obj.method())، يمرّر المترجم تلقائيًا عنوان obj كمعامل خفي اسمه this داخل الدالة. تحتاجه صراحة بحالتين شائعتين: لما يتشابه اسم معامل الدالة مع اسم عضو بالصنف (this->name = name)، ولإرجاع مرجع للكائن نفسه من دوال متسلسلة (method chaining) عبر return *this.
الصياغة
this->member; return *this;
📄 مثال
class Builder {
std::string name;
public:
Builder& setName(std::string name) {
this->name = name; // this-> يميّز العضو عن المعامل
return *this; // يتيح التسلسل: b.setName("a").setName("b")
}
};
Builder b;
b.setName("موقع1").setName("موقع2");أهم النقاط
| العنصر | الوظيفة |
|---|---|
| this->member | الوصول الصريح لعضو الكائن، مفيد عند تشابه أسماء المعاملات |
| *this | الكائن نفسه (وليس المؤشّر إليه) — يُستخدم بالإرجاع لتسلسل الدوال |
| this بدوال const | نوعه const Type* this داخل دالة عضو معلَّمة const |
💡 نصائح عملية
- استخدم return *this; بدوال setter لتفعيل method chaining الأنيق
- this غير متاح إطلاقًا داخل دوال static — لأنها لا ترتبط بكائن محدد
⚠️ أخطاء شائعة
- محاولة استخدام this داخل دالة static member — خطأ ترجمة لأن static لا كائن مرتبط بها
- الخلط بين return *this (الكائن) وreturn this (المؤشّر) عند بناء واجهات متسلسلة
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CPP الكامل بالعربي.