مشکلی در خصوص متغیر های مرجع - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

مشکلی در خصوص متغیر های مرجع

+1 امتیاز

با سلام 

با این که متغیر های رفرنس داده های Lvalue قبول میکنن(با توجه به این که خوب به جایی در حافظه اشاره میکنند طبیعی هست) پس چرا در تعریف به صورت ثایت میتوان به صورت rvalue مقدار دهی کرد ؟

برای مثال :



int &a=5; // error

int const &a=5;   //OK!!?

 

سوال شده بهمن 11, 1397  بوسیله ی poniso (امتیاز 20)   1 3 3

1 پاسخ

+1 امتیاز
 
بهترین پاسخ
دلیل این هست که در حالت اول اگر خطا داده نشود شما میتوانید مقدار rvalue رو بعدا تغییر بدید که هم بی معنی هست و هم جلوی یکسری optimization هایی که بعدا کامپایلر میتونه انجام بده رو میگیره .

مورد دوم هم بخاطر این که ++C به این شکل طراحی شده کار میکنه یعنی وقتی که rvalue به const& پاس داده میشه تا وقتی که const& وجود داره rvalue هم داخل حافظه میمونه .
پاسخ داده شده بهمن 12, 1397 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد فروردین 13, 1398 بوسیله ی poniso
...