Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> const reference to the temporary object 
V
    Опции темы
mes
Дата 17.3.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(GoldFinch @  17.3.2009,  14:34 Найти цитируемый пост)
данные в стеке непосредственно при этом никуда не пропадают, но при выполнении последующего кода они могут пропасть

не смотря на то что данные присутствуют, они не могут считаться валидными и их присутствиe является лишь особенностью "исполнящей машины."

Добавлено через 2 минуты и 23 секунды
Цитата(Lazin @  17.3.2009,  14:44 Найти цитируемый пост)

нед, там создается временный объект в том-же scop-e что и ссылка на него, объект возвращается по значению

опять невнимательность :(


--------------------
PM MAIL WWW   Вверх
xvr
Дата 17.3.2009, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(mes @ 17.3.2009,  15:31)
Цитата(xvr @  17.3.2009,  14:26 Найти цитируемый пост)
Это написано в стандарте

цитата то обрезана  smile 

Да, там дельше идет речь про 3 исключения из этого правила

Цитата

 is  bound  persists  for the lifetime of the reference or until the end of the scope
  in which the temporary is created, whichever comes first.


Это касается исключений

Цитата

только мне кажется эта цитата не объясняет.. ведь в примере по сылке временный объект создается внутри функции и соответсвенно время жизни должно определяться 
scope`ом той функции.
Угу, только этих объектов 2 
  •  Внутри функции, он разрушается при выходе из функции (но после 2го)
  •  Снаружи, в стеке в месте вызова функции. Инициализируется конструктором копирования (от 1го объекта, который после этого и разрушается), и разрушается когда ссылка, куда его привязали, выходит из области видимости
Ссылка инициализируется адресом 2го объекта

PM MAIL   Вверх
InvalidProperty
Дата 17.3.2009, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 356
Регистрация: 31.10.2007
Где: Россия, Казань

Репутация: нет
Всего: 9



Цитата(vinter @  17.3.2009,  15:38 Найти цитируемый пост)
Цитата(InvalidProperty @  17.3.2009,  16:38 Найти цитируемый пост)
other implementations might not.

это тебе ни о чем не говорит? 


Цитата(InvalidProperty @  17.3.2009,  15:38 Найти цитируемый пост)
Во всяком случае, я не встречался с примерами, когда не обладает.


Зачем нервничать?



--------------------
dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null
dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null
echo $0 >> $0
PM MAIL ICQ Jabber   Вверх
vinter
Дата 17.3.2009, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(Lazin @  17.3.2009,  16:44 Найти цитируемый пост)
это не идиотизм языка, это нужно для того, что-бы лишний раз не копировать объект передаваемый по значению


Lazin, если бы я такое увидил в коде, то посчитал бы ошибкой. До сегодняшнего дня... Т.к все таки ссылка, это ссылка и это как то неправильно, увеличивать время жизни

Добавлено через 3 минуты и 36 секунд
Цитата(InvalidProperty @  17.3.2009,  16:55 Найти цитируемый пост)
Во всяком случае, я не встречался с примерами, когда не обладает.

встречай MSVC 9.0
Код

_Myt& __CLR_OR_THIS_CALL operator=(const _Myt& _Right)
        {    // assign _Right
        return (assign(_Right));
        }



--------------------
Мой блог
PM MAIL WWW   Вверх
mes
Дата 17.3.2009, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(xvr @  17.3.2009,  14:55 Найти цитируемый пост)
Угу, только этих объектов 2 

xvr, спасибо за разъяснение.. моя проблема была в том, что не обратил внимание (как заметилLazin), на то что результат передается по значению smile



--------------------
PM MAIL WWW   Вверх
InvalidProperty
Дата 17.3.2009, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 356
Регистрация: 31.10.2007
Где: Россия, Казань

Репутация: нет
Всего: 9



Цитата(vinter @ 17.3.2009,  15:57)
Цитата(InvalidProperty @  17.3.2009,  16:55 Найти цитируемый пост)
Во всяком случае, я не встречался с примерами, когда не обладает.

встречай MSVC 9.0
Код

_Myt& __CLR_OR_THIS_CALL operator=(const _Myt& _Right)
        {    // assign _Right
        return (assign(_Right));
        }

при чем тут это и basic_string?


--------------------
dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null
dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null
echo $0 >> $0
PM MAIL ICQ Jabber   Вверх
vinter
Дата 17.3.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(InvalidProperty @  17.3.2009,  17:10 Найти цитируемый пост)
при чем тут это и basic_string?

это его метод


--------------------
Мой блог
PM MAIL WWW   Вверх
mes
Дата 17.3.2009, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(InvalidProperty @  17.3.2009,  14:11 Найти цитируемый пост)
(я говорю про тот момент, когда заводится ссылка const string& s = f();

чего то акцент спора сдвинулся в сторону того, имеет ли cow или нет, хотя данный момент не имеет значения, так как подсчет ссылок выполняется во время копии объекта,
а не во время снятия с него ссылки  smile 


--------------------
PM MAIL WWW   Вверх
SaDFromSpb
Дата 20.3.2009, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



Цитата(vinter @  17.3.2009,  15:57 Найти цитируемый пост)
Lazin, если бы я такое увидил в коде, то посчитал бы ошибкой. До сегодняшнего дня... Т.к все таки ссылка, это ссылка и это как то неправильно, увеличивать время жизни

Господа, мне кажется вы упустили, что речь идет именно о константных ссылках. Только в случае существования константой ссылки время жизни временного объекта продлевается. И об этом написано в статье, на которую ссылается топикстартер. И это будет уже ИМХО более логично, чем оно продлевалось бы при существовании и неконстантных ссылок тоже.

Это сообщение отредактировал(а) SaDFromSpb - 20.3.2009, 02:16


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
Lazin
Дата 20.3.2009, 06:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



никто ничего не упустил smile 
PM MAIL Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1067 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.