المؤشر this
في لغات البرمجة الكائنية (OOP) مثل C++، يكون المؤشر this عبارة عن كلمة أساسية تُستخدم للإشارة إلى الكائن الحالي داخل دالة العضو. إنه مؤشر خاص يحمل عنوان الذاكرة لمثيل الكائن الحالي.
مثال 1:
#include <iostream> using namespace std; class stud { public: void address() { cout << this; } }; int main() { stud a, b, c; cout << "The adress of a\t"; a.address(); cout << endl << "The adress of b\t"; b.address(); cout << endl << "The adress of c\t"; c.address(); cout << endl; return 0; }
في هذا البرنامج، لدينا class يسمى Stu، والذي يحتوي على عنوان دالة العضو address(). تقوم دالة العضو هذه ببساطة بطباعة عنوان الذاكرة للكائن الحالي باستخدام المؤشر this.
وظيفة المؤشر this:
- في دالة address() لـstud class، يشير this إلى الكائن الحالي الذي يتم استدعاء دالة العضو من أجله.
- داخل الدالة (address()) يقوم cout << this; بطباعة عنوان الذاكرة للكائن الحالي.
- في الدالة main()، نقوم بإنشاء ثلاثة كائنات a وb وc من class stud.
- نقوم بعد ذلك باستدعاء الدالة address() على كل كائن، والتي تطبع عنوان الذاكرة لكل كائن.
- يضمن المؤشر this طباعة عنوان الذاكرة الصحيح للكائن الحالي عند استدعاء دالة address() لكل كائن.
مثال 2:
#include <iostream> using namespace std; class Student { int id; public: void set_id(int id) { this->id = id; } void print_id() { cout << "ID is " << id << endl; } }; int main() { Student St; St.set_id(10); St.print_id(); return 0; }
في هذا البرنامج، لدينا class اسمه Student مع معرف متغير عضو خاص يمثل id الطالب. يوفر الـclass دالتين للعضو: set_id() وprint_id().
وظيفة المؤشر this:
- في دالة العضو set_id()، معرف المعلمة الذي تم تمريره إلى الدالةله نفس اسم معرف متغير العضو للفئة. للتمييز بينهما، يتم استخدام المؤشر this.
- داخل الدالة set_id()، this->id = id; يعين قيمة معرف المعلمة لمعرف متغير العضو للكائن الحالي.
- يشير المؤشر this إلى الكائن الحالي الذي يتم استدعاء دالة العضو من أجله. يتم استخدامه للوصول إلى أعضاء الكائن.
- في الدالة main()، يتم إنشاء كائن St من فئة Student. يتم استدعاء الدالة set_id() لتعيين معرف الكائن St إلى 10.
- ثم يتم استدعاء الدالة print_id() لطباعة معرف الكائن St.
ستكون مخرجات البرنامج كالتالي:
ID is 10