PDA

View Full Version : مبتدی: مثالی از اشاره گر this



fm.star
سه شنبه 16 خرداد 1391, 23:46 عصر
سلام.در صورت امکان یکی کاربرد thisدر یک مثال برام توضیح بده ,

Ananas
چهارشنبه 17 خرداد 1391, 01:26 صبح
سلام.
یک مثال :

class ClassX
{
int Width;
int Height;
void SetSize(int w, int h)
{
this->Width = w;
this->Height = h;
};
};

توابعی که زیرمجموعه کلاس هستند میتونن از طریق عبارت this به شی ای از کلاس (یک نسخه از اون کلاس که تولید شده) که تابع داره از طریق اون فراخوانی میشه دسترسی داشته باشن. تو این مثال قراره تابع SetSize از نمونه های ClassX فراخونی بشه و ما اون نمونه ای که تابع داره برای اون فراخونی میشه رو با عبارت this داریم. this یک اشاره گر هست به کلاس ای که تابع از طریق اون فراخونی میشه و ازین عبارت داخل توابع کلاس استفاده میشه.

fm.star
چهارشنبه 17 خرداد 1391, 08:35 صبح
تابع SetSize بدون this چه شکلی میشه و دقیقا دلیل استفاده از this در برنامه ها چیه؟مثلا از سازنده برای مقدار دهی استفاده میشه اما از this چطور؟؟؟؟؟؟؟؟؟:ناراحت:

Ananas
چهارشنبه 17 خرداد 1391, 15:13 عصر
در این مورد فرقی نداره می تونی استفاده نکنی ولی کلا this موقعی معنی پیدا میکنه که مثلا شما داری یک کلاس تعریف میکنی و این کلاس تابعی داره که این تابع احتیاج به اشاره گری به خود کلاس داره اینجا از عبارت this به عنوان اون اشاره گر استفاده میکنی. ممکنه بخوای این اشاره گر رو به تابعی بفرستی، انوقت اگه this نباشه از کجا این اشاره گر رو میاری (اشاره گر به خود کلاسی که تابع زیر مجموعه ی اون هست)؟ پس برای داشتن اشاره گر و دسترسی به آدرس اون کلاس احتیاج به چیزی داریم که همون this هست.

fm.star
چهارشنبه 17 خرداد 1391, 17:31 عصر
اگه ممکنه تابعی از یک کلاس که نیازمند اشاره گری به خود کلاس هست رو برام مثال بزنید.مثلا کی لازمه که به آدرس کلاس دسترسی داشته باشیم؟

Ananas
جمعه 19 خرداد 1391, 00:20 صبح
مثال :

class TMyClass;
void CopyTMyClass(TMyClass *, TMyClass *);

class TMyClass
{
public:
int x, y;
void * ClassAddress()
{
return this;
};
bool IsEqualBy(TMyClass * c)
{
return (c == this);
};
void CopyFrom(TMyClass *dst_)
{
CopyTMyClass(this, dst_);
};
};

void CopyTMyClass(TMyClass * src_, TMyClass * dst_)
{
src_->x = dst_->x;
src_->y = dst_->y;
}

نگرد ببینی چیزای که وجود داره کجا استفاده کنی تا به دردت بخوره، ببین برای کاری که می خوای انجام بدی چه چیزایی هست که لازم داری استفاده کنی. یعنی زورکی که مجبور نیستی از this استفاده کنی حتما، هر وقت لازمش داشتی خودت میری سراغش. اگه به اشاره گر کلاس نیازی نداری this لازم نمیشه.