PDA

View Full Version : شی و اشاره گر



suraty
جمعه 27 آبان 1390, 17:55 عصر
سلام
این برنامه در خروجی عدد 10 را دوبار چاپ میکرد. درحالی که به نظر من باید عدد 12 را دو بار چاپ می کرد. چرا این اتفاق افتاده؟ (یعنی عدد 10 دو بارچاپ می شود؟)


#include"iostream.h"

class class1
{

public:
int x;

class1(){
x=10;
}

void f(class1 *p){
(*p).x+2;
cout << x;
}
};

int main()
{
class1 ob;
class1 *s;
s = &ob;
ob.f(s);
cout << ob.x;
return 0;
}

حامد مصافی
جمعه 27 آبان 1390, 18:35 عصر
به خط زیر توجه کن:

(*p).x+2
گمان می‌کنم این دقیقا جاییه که تورو به اشتباه انداخته!
این تکه کد مقدار x کلاس دریافتی را ۲ واحد افزایش می‌دهد. اما به حاصل این جمع چه می‌کنه؟ هیچی! بعد از گذر از این خط اونو دور میندازه!
زمانی اتفاق مد نظر تو می‌افته که بعد از این افزایش حاصل در همان متغیر ذخیره بشه

suraty
شنبه 28 آبان 1390, 11:45 صبح
سلام
اگر به جای این خط نوشته شده بود:

(*p).x+=2
اونوقت در خروجی باید دو بار عدد 12 چاپ میشد. من امتحان کردم دو مرتبه عدد 2 رو چاپ کرد!

حامد مصافی
شنبه 28 آبان 1390, 13:16 عصر
من امتحان کردم و درست بود!
http://codepad.org/Nw7WX9jT