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

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

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

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

25.05.2011, 20:33. Просмотров 767. Ответов 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++
можно ли передать временный объект в функцию по ссылке? void f1(int &amp; ); ..... int main() { f1(int());

Время жизни объекта - C++
Доброго времени суток, объясните пожалуйста, как можно продлить время жизни объекта, который создан локально. В данном случае - есть...

Копирование из временного объекта - C++
1) Собственно, как работает такой конструктор? Хотелось бы какой-нибудь пример. 2) Сильно ли различаются по скорости new/notthrow...

Возвращение временного объекта из метода - C++
Доброго времени суток,господа! Сразу к делу: Имеется следующий код: struct Test { int a; //Lets just exist Test(){}...

Как избежать постоянных инициализаций временного объекта? - C++
Здравствуйте! Будет ли этот код class my::testBuffer{ //код А private: int data; public: testBuffer(const int&amp; d ) :...

Почему для временного безымянного объекта не вызывается оператор ()? - C++
Почему AddValue(value)(*pos); не вызывает operator()(int &amp;elem) из класса AddValue? class AddValue { public: AddValue(int...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2011, 20:33
Привет! Вот еще темы с ответами:

Время жизни объектов - C++
Вроде простая вещь, а не могу понять почему так. #include &lt;iostream&gt; using namespace std; int* f() { int a = 7; int...

C++11 время жизни переменных - C++
После долгого перерыва в программирование вновь спохватился и тут наткнулся на такую не ожиданность #include &lt;iostream&gt; using...

Время жизни переменных - C++
Добрый вечер. у меня такая проблема. мне нужно перегрузить функцию для моего класса: numb numb::operator +(const numb &amp;p)const { ...

Определить время жизни Static переменной - C++
Привет народ. Вопрос: Если static переменная объявлена в теге(внутри функции), она будет жить пока не закроется тег или всю функцию и после...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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