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