PDA

View Full Version : معرفي متغيير



behnia_k
یک شنبه 26 آذر 1391, 09:01 صبح
در كتاب "Thinking in C++‎‎‎‎‎‎, 2nd ed. Volume 1 ©2000 by Bruce Eckel" فصل 12 در مثالي براي يك كلاس متغيير آن را به اين شكل معرفي كرده بود.


class SmartPointer {
ObjContainer& oc;
int index;
public:
SmartPointer(ObjContainer& objc) : oc(objc) {
index = 0;
‌‍}
}

علت استفاده از & هنگام معرفي متغير oc در كلاس بالا چيست و به چه معني است.

H_G_G_I
یک شنبه 26 آذر 1391, 09:49 صبح
یعنی ارجاعه !
وقتی شما oc رو دست بزنی درواقع اونی رو که بهش ارسال شده رو تغییر دادی !
ارجاع درواقع همون اشاره گر به حساب میاد + یکمی تفاوت .

Felony
یک شنبه 26 آذر 1391, 09:57 صبح
اون متغییر رو به صورت یک اشاره گر تعریف کرده ، یعنی آدرس یک شئ از نوع ObjContainer رو در خودش نگهداری میکنه و هر تغییری در این متغییر داده بشه ( oc ) عملا در آدرسی که این اشاره گر بهش اشاره میکنه اعمال میشه ، پس میشه By Reference ، مثلا :


void test(int &oc)
{
oc= oc + 1;
}

int _tmain(int argc, _TCHAR* argv[])
{
int a= 1;
test(a);
printf("%d", a);
getchar();
return 0;
}

با اجرای کد بالا با اینکه تابع test مقداری برگشت نمیده ولی مقدار متغییر a رو عوض میکنه ، چون به جای گرفتن یک متغییر به عنوان ورودی آدرس یک متغییر رو گرفته و روش عملیات اضافه کردن رو اعمال میکنه .