Форум программистов, компьютерный форум CyberForum.ru

Время жизни временного объекта - C++

Восстановить пароль Регистрация
 
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
25.05.2011, 20:33     Время жизни временного объекта #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
std::ostringstream os;
 
std::string* str = &os.str(); //временный объект "живёт" только в этом выражении 
                              // до работы RVO (return value optimization)
std::cout<<*str<<"\n"; //устаревший указатель (вывод (неизвестно), в моём случае - пробелы)
 
 
std::string& str = os.str(); // временный объект живёт, пока используется ссылка на него
std::cout<<str<<"\n";    // в текущем блоке (вывод отрабатывает, как положено)
 
char *s = new char [80];
std::strcpy(s, os.str().c_str()); // временный объект используется в strcpy(),
std::cout<<s<<"\n";              // после чего уничтожается работой RVO (вывод отрабатывает, как положено)
В стандарте C++ для ссылки определено исключение, якобы если на временный объект связана с ссылочной переменной, то его время жизни совпадает со временем жизни ссылочной переменно (с которой он связан) до конца текущего блока?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2011, 20:33     Время жизни временного объекта
Посмотрите здесь:

C++ Время жизни переменных
Как избежать постоянных инициализаций временного объекта? C++
C++ Копирование из временного объекта
время жизни временного объекта C++
C++ Время жизни объекта
C++ Время жизни объектов
Возвращение временного объекта из метода C++
C++ Почему для временного безымянного объекта не вызывается оператор ()?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 03:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru