أنا أعرف أن المؤشر thes يوفره المترجم ولكن المشكلة أنني لم أفهم متى استخدمه وكيف وماهي المشاكل الممكن اتغلب عليها...
أريد شرح مبسط ومثال بسيط يؤدي الغرض وهو فهم الطريقة والباقي أن شاء الله نقرأ مراجع ...لاتبخلو علي...
أنا أعرف أن المؤشر thes يوفره المترجم ولكن المشكلة أنني لم أفهم متى استخدمه وكيف وماهي المشاكل الممكن اتغلب عليها...
أريد شرح مبسط ومثال بسيط يؤدي الغرض وهو فهم الطريقة والباقي أن شاء الله نقرأ مراجع ...لاتبخلو علي...
اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم
سبحان الله وبحمده سبحان الله العظيم
لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).
class Test
{
int a;
void setA(int a)
{
this->a = a;
}
};
تم استخدام This لكي نفرق بين a الممررة للتابع وa المتحول العضو في الـ class TEST
وهذا مثال بسيط عالسريع (f)
يعتبر هذا المؤشر ضمنياٌ كافة الأعضاء ضمن الغرض على أنها عناصر تابعة له .
يًستخدم المؤشر this ضمنياً للرجوع إلى المعطيات الأعضاء وإلى التوابع الأعضاء أيضاً, يتعلق نمط هذا المؤشر بنمط الغرض المرتبط به .
من بين الاستخدامات الهامة للمؤشر this إمكانية منع تنفيذ عمليات إسناد غرض إلى نفسه وذلك أثناء التحميل الزائد للعمليات .
يمكن كذلك استخدام المؤشر this للسماح بتنفيذ عمليات استدعاء للتوابع الأعضاء بعد لصق اسمها بشكل متتالي
Class TIME
{
public:
TIME & setHour(int);
TIME & setMinut(int);
};
TIME t;
t.setMinut(10).setHour(2)this means I am
معناها أنا
حينما ينتكلم الclass عن نفسه
هذا مثال بسيط يوضح عمل this
#include
#include
class Person
{
private: char name[30];
int Nr;
char Adress[50];
public:
Person(char* name,int Nr,char* Adress);
Person(Person *P);
char* getName();
int getNr();
char* getAdress();
Person *Clone();
void OutData();
};
Person::Person(char* name,int Nr,char* Adress)
{
this->Nr=Nr;
strcpy(this->name,name);
strcpy(this->Adress,Adress);
}
Person::Person(Person *P)
{
strcpy(this->name,P->name);
strcpy(this->Adress,P->Adress);
this->Nr=P->Nr;
}
Person* Person::Clone()
{
Person *Temp=new Person(this);
return Temp;
}
char* Person::getName()
{
return name;
}
int Person::getNr()
{
return Nr;
}
char *Person::getAdress()
{
return Adress;
}
void Person::OutData()
{
cout<}
void main()
{
Person P1("Alsahm Alnari",1,"unknow");
Person P2("Al-Khwlani",2,"Germany");
Person P3(&P2);
Person *P4=P1.Clone();
P1.OutData();
P2.OutData();
P3.OutData();
P4->OutData();
}السلام عليكم ورحمة الله وبركاته
لقد فهمت الموضوع والموضوع بالفعل سهل ومعليش على تأخير الرد لأنني كنت مسافر وعودت والحمدلله والحقيقة رجعت الى مرجع وفهمت وزددت فهما من خلال شرحكم ويعلم الله أنني أحبكم في الله أخ اسماعيل وأخ khwlani وأحب حرصكم على تبادل العلم والمعرفة مع كافت الاعضاء مع الفرق الشاسع بين مستوياتنا ومستواكم مشاء الله ...
زادكم الله علماً...
نعود الى موضوعنا هل نستطيع القول أن المؤشر htis هو مؤشر ضمني داخلي مع كل عملية استدعاء للدوال . واذا استخدم صراحة للدلالة على البيانات أو أعضاء الclass ( أي يدل على البينات الخاصة private ) .
هذا وأشكركم ....
اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم
سبحان الله وبحمده سبحان الله العظيم
لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).
هذا الموضوع مغلق.