crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Изменение значения возвращаемого из функции
Гость_Quester_*
сообщение 2.6.2017, 20:37
Сообщение #1





Гости








    


Добрый вечер, ребята! Объясните пожалуйста, как такое работает:

...
std::string getStr(){
   reutrn "hello";
}

int main(){

   getStr() = "World!";
...


Из функции "getStr()" вернется временная переменная, скажите пожалуйста, разве можно изменять значение временной переменной? И насколько это корректно??

Спасибо!!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
lanz
  опции профиля:
сообщение 31.8.2017, 10:34
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Цитата
А ты опустил байндинг аргумента оператора=

this? он конвертируется в xvalue до байндинга, так что это тут не причем
"world"? а что необычного в байндинге const char* ?

Превращение prvalue в xvalue имеет непосредственное отношение к сути вопроса и объясняет механизм, поэтому я его и описал, байндинг аргументов не имеет к ней отношения. Если считаете обратное, разверните свою точку зрения более подробно.
Алексей1153 все в целом верно описал, кроме того что из функции возвращается не временное значение, а prvalue, о чем спрашивал ТС
Цитата
мы же rvalue значение присваиваем, а это нельзя вроде?

Поэтому я и посчитал возможным рассказать о механизме temporary materialization.

Цитата
хех, нашли, о чём спорить

https://imgs.xkcd.com/comics/duty_calls.png
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 8:00