![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
||||
|
||||
Gunslinger |
|
||||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
mes, спасибо за такой развернутый ответ.
По порядку:
Пробел - не задумывался. Может быть временный объект располагается в стеке, как и переменная\объект (только если они не созданы через new). И, соответственно, уничтожаются после выхода из функции (если важна последовательность уничтожения или что-то еще - то тут тоже пробел ![]()
? Ссылок не существует, по ссылке нельзя перемещаться, как по указателю, ссылка - адрес физически существуемой переменной\объекта,... Что еще?
блок функции - от { до }, функциональный блок - вы говорите о логическом понятии? конкретный целостный механизм, выполняющий задачу?
Я имел ввиду Тип* р, переменная, в которой хранится адрес.
Тип& возвращает адрес памяти соответствующего размера. Значит return переменная\объект сохраняется и не уничтожается после выхода из функции. xvr привел кусок стандарта.
цитата выше. Как можно давать адрес на return переменная\объект, если после выхода из функции перем.\объект уничтожится? xvr привел отрывок из стандарта, что такая перем\объект не будет уничтожена, пока из главной программы на нее существует ссылка. С инструментами рисования мне интересна разница и эффекты, которые они дают изображению. Что же касается программирования, то раньше я с++ на дух не переносил: всякие конструкции, тут нужно добавить это ключевое слово, а тут нет, иначе работать будет по другому; а вот тут еще такой нюанс.. Океан с подводными камнями на каждом шагу. Сейчас, более менее понимая физические основы (работа с памятью), я уже начинаю понимать те подводные камни, от которых у меня сводило мозг раньше. |
||||||||||||
|
|||||||||||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Опять 'за рыбу деньги' ![]() Давайте рассмотрим 2 примера:
Вариант 2:
|
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
![]() хотелось бы добавить что к рассматриваемому вопросу функция прямого отношения не имеет.. вот тут тот же самый эффект :
|
|||
|
||||
Gunslinger |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
Б@%ь! Это же инициализация ссылки! Только где в таком случае хранится результат?
Об этом вчера кажется у Страуструпа читал. Пишет, результат неопределен и так писать нельзя. Это сообщение отредактировал(а) Gunslinger - 18.12.2009, 19:23 |
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ага, инициализация ссылки временным объектом - именно эта конструкция и продлевает жизнь объекта до времени жизни ссылки. Добавлено через 1 минуту и 34 секунды только ведь ссылки все равно чем ее инициализируют, а вот временному объекту не все равно. Поэтому он выступает в главной смысловой роли.. ![]() |
|||
|
||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
нет .. никаких указателей я не рассматривал и они не относятся к данному вопросу. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
В общем и целом возврат любой структуры (в том числе и класса) по значению, компилятор ОБЫЧНО делает так:
При возврате объектов копирование производится через operator =. В процессе генерации кода возможны оптимизации:
|
|||
|
||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
xvr, спасибо за подробности о механике. Последний вопрос
![]() |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Стандарт требует
|
||||
|
|||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
xvr, тогда буду ссылаться на стандарт, если потребуется.
xvr, mes, спасибо за помощь. Это сообщение отредактировал(а) Gunslinger - 21.12.2009, 09:27 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |