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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
#1

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

25.05.2011, 20:33. Просмотров 727. Ответов 0
Метки нет (Все метки)

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++11 время жизни переменных C++
время жизни временного объекта C++
C++ Время жизни объекта
C++ Выведите в окно приложения прочитанную фамилию и оставшееся "время жизни" до 3000г
Определить время жизни Static переменной C++
C++ Время жизни объектов
Возвращение временного объекта из метода C++
C++ Почему для временного безымянного объекта не вызывается оператор ()?

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

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

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