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" один и тот же адрес ???
Спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 20.1.2016, 8:03
Сообщение #2


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

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Ponchikus, ты выводишь адрес локальной переменной, которая уже будет уничтожена по выходу из функции. Поэтому адрес вполне уже может использоваться под новые нужды. Значение, которая вернула функция, используется в конструкторе при создании нового объекта (QString str), для которого и был использован уже освободившийся адрес


кстати, вот так

QString str;
str=returnStr();
qDebug()<<&str;



адрес может быть выведен другой (по логике - он обязательно другой будет)

Сообщение отредактировал Алексей1153 - 20.1.2016, 8:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




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