برگرداندن مقدار بازگشتی تابع با && - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

برگرداندن مقدار بازگشتی تابع با &&

+1 امتیاز

سلام دوستان من توی یکی از کتابخانه هایی که استفاده می کنم کدی به این شکل دیدم :

string &&func();

این جور تعریف کردن توابع یعنی چی ؟ چه فرقی با حالت عادی داره ؟!!

سوال شده بهمن 13, 1392  بوسیله ی student (امتیاز 53)   3 8 11

1 پاسخ

+2 امتیاز
 
بهترین پاسخ

بستگی به پیاده سازی کلاستون داره  .

ولی اکثر وقت ها استفاده از کد بالا درست نیست

مثلا کد زیر رو در نظر بگیرین

string &&func(){
    string a="abc";
    return std::move(a);
}

int main()
{
    cout<<func();
}

این کد ارور میده شما دارین اشاره گر به حافظه local رو بر کی گردونین که به محض return شدن پاک میشه

درستش اینه که خود string رو با مقدار  return کنین.

string func()

در ضمن زمان return تابع خود کامپایلر کد رو RVO می کنه . (return value optimize ) و نیازی به استفاده از move نیست .

http://en.wikipedia.org/wiki/Return_value_optimization

 

پاسخ داده شده اسفند 11, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد اسفند 12, 1392 بوسیله ی مصطفی ساتکی
...