crossplatform.ru

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

> QString объект из функции.
Ponchikus
  опции профиля:
сообщение 19.1.2016, 15:32
Сообщение #1


Студент
*

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

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




Репутация:   0  


Доброго времени суток, уважаемые форумчане. Очень интересует следующий вопрос.

QString returnStr()
{
QString string("a");

qDebug()<<&string;        // например адрес 0x111111

return string;
}

int main()
{
...
QString str=returnStr();
qDebug()<<&str;         //тот же адрес, 0x111111
...


Почему в этом случае у переменной "string" и у переменной "str" один и тот же адрес ???
Спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
lanz
  опции профиля:
сообщение 19.1.2016, 19:46
Сообщение #2


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

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

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




Репутация:   8  


Цитата
принимает примерно следующий вид

Нет, RVO, означает что не создается временный объект для хранения значения, возвращаемого из функции.
Локальная переменная не отбрасывается, иначе бы qDebug() ничего не печатал бы.

Немного переделанный пример из википедии:
void returnStr(QString * _hiddenAddress) {
  *_hiddenAddress = "a";
}


Сообщение отредактировал lanz - 19.1.2016, 19:46
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




RSS Текстовая версия Сейчас: 29.3.2024, 5:27