ورود

View Full Version : سوال در مورد pointer & reference



Hussain<ELite>
یک شنبه 30 شهریور 1393, 00:31 صبح
سلام
با این دوتا مفهوم آشنا هستم و کاربرد هر دوتا رو هم میدونم(در حد تئوری) اما این سوال برام پیش اومده که ، چطور برنامه نویس تصمیم میگیره که از کدامیک استفاده کنه و کجا؟ مثلا اخیرا دارم با کتابخانه SDL کار میکنم چندتا دستور نوشتم و به ارورهای بر خوردم که ناشی از تعریف همین مقادیر هست مثلا
برای ورودی یک تابع نوشتم:

const std::string &msg
در صورت برداشتن علامت & دچار خطا میشه. خب چرا حتما باید علامت & باشه تا ارور نده چه میشد اگر کسی که این کلاس رو نوشته با اشاره گر تعریفش میکرد؟
یا مثلا یک کلاس مثل SDL_Event در کتابخانه SDL وقتی تعریفش میکنیم باید برای صدا زدن اون متغییر حتما به این صورت تعریف بشه (&variable) در غیر اینصورت دچار خطا شده ایم چرا برنامه نویس از متغییر عادی یا اشاره گر برای این کار استفاده نکرده؟

بعد یک مورد دیگه من با دیدن مثالها میتوانم بفهمم ایرادم کجاست و باید چگونه یک تابع رو صحیح تعریف کرد اگر مثال رو نخونده باشم در تعریف متغییر یا تابع دچار اشتباه میشم و اروری هم که معمولا چاپ میکنه قابل فهم نیست بپس چطور میشه از اینگونه خطا ها دوری کرد؟

omid_kma
یک شنبه 30 شهریور 1393, 12:11 عصر
اشاره گر و &variable (یا refrence ) تقریبا یکی هستن با یکسری تفاوت جزیی (http://www.7khatcode.com/5233/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-refrence-%D8%A8%D8%A7-%D8%A7%D8%B4%D8%A7%D8%B1%D9%87-%DA%AF%D8%B1?). پس اگر با اشاره گر هم فرستاده میشد تفاوتی نداشت .
refrence مخصوص ++C هست و کد رو خواناتر می کنه.
در مورد تفاوت ارسال با refrence با ارسال با مقدار این لینک رو ببینید http://www.7khatcode.com/78/call-by-refrence-%D8%AF%D8%B1-%D9%85%D9%82%D8%A7%D8%A8%D9%84-call-by-value
جواب سوال که چرا const استفاده می کنیم هم داخلش هست .