crossplatform.ru

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

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





Гости








    


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

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

int main(){

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


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

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


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

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




Репутация:   12  


в том виде, как ты написал, это не работает.
если хочешь присваивать результат значению, возвращаемому из функции, результат должен иметь тип lvalue, то есть, возвращаться по ссылке.
типичное применение возврата ссылки - operator[].
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Quester_*
сообщение 3.6.2017, 13:07
Сообщение #3





Гости








    


Цитата(Iron Bug @ 2.6.2017, 21:34) *
в том виде, как ты написал, это не работает.
если хочешь присваивать результат значению, возвзащаемому из функции, результат должен иметь тип lvalue, то есть, возвращаться по ссылке.
типичное применение возврата ссылки - operator[].

Если написать так, то работает-
...
cout<<(getStr() = "Wolrd");
...

, напишет "World". Просто не понятно, как компилируется, мы же rvalue значение присваиваем, а это нельзя вроде?

Спасибо за ответ!!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




RSS Текстовая версия Сейчас: 22.11.2024, 11:48