Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 14.04.2016, 19:10   #101
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от RAFA91 Посмотреть сообщение
в онлайн компиляторе будет тогда засираться память копией которая

не используется. это бред.

правильно должно быть как на моем скрине.

выложите кто нибудь результаты работы своего компилятора что-бы не гадать.
Посчитайте до 4 create и delete.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 15.04.2016, 11:40   #102
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

в онлайн компиляторе будет тогда засираться память обьектом который

не используется.


_________________________________

зачем было сделано что при возврате по значению обьект нужно копировать ?

можно ж было его уничтожать после присвоения средствами компилятора как

в онлайн компиляторе.



create Base 0xbfa8c3cc
create Base 0xbfa8c3cd
!!!!!!!!!!!!!!!!!!!!!!!!!!


create copy Base 0xbfa8c3ce 0xbfa8c3cc


*********************


operator 0xbfa8c3cd 0xbfa8c3ce


deleting Base 0xbfa8c3ce


!!!!!!!!!!!!!!!!!!!!!!!!!!
deleting Base 0xbfa8c3cd
deleting Base 0xbfa8c3cc

Последний раз редактировалось RAFA91; 15.04.2016 в 11:43.
RAFA91 вне форума
Старый 15.04.2016, 12:00   #103
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
в онлайн компиляторе будет тогда засираться память обьектом который

не используется.
вы реально до 4-ех посчитать не в состоянии?
не будет там ничего засираться.
Цитата:
зачем было сделано что при возврате по значению обьект нужно копировать ?
потому что это возврат по значению...очевидно же.

вывод который вы показали отличается лишь тем что один компилятор сдвинул все деструкторы в конец выражения, второй удалил как только объект стал не нужен(но все еще внутри выражения).
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 15.04.2016, 12:03   #104
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

для тех кто в броне поезде


зачем было сделано что при возврате по значению обьект нужно копировать ?

можно ж было его уничтожать после присвоения средствами компилятора как тут


create Base 0xbfa8c3cc
create Base 0xbfa8c3cd
!!!!!!!!!!!!!!!!!!!!!!!!!!


create copy Base 0xbfa8c3ce 0xbfa8c3cc


*********************


operator 0xbfa8c3cd 0xbfa8c3ce


deleting Base 0xbfa8c3ce


!!!!!!!!!!!!!!!!!!!!!!!!!!
deleting Base 0xbfa8c3cd
deleting Base 0xbfa8c3cc


___________________________________ ________


почему в борланде не вызывается деструктор ?
Изображения
Тип файла: jpg Б.JPG (30.0 Кб, 75 просмотров)
RAFA91 вне форума
Старый 15.04.2016, 12:27   #105
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
зачем было сделано что при возврате по значению обьект нужно копировать ?
Вы сами так код написали.
Напишите так:
Код:
Base func (const Base& x_)
{
	Base x(x_);
	cout<<"*********************"<<endl;
 
	return x;
}
и не будет лишнего копирования.
http://ideone.com/hVxmI9

Почему - думаю и так понятно.
Если нет, то не морочьте людям голову и почитайте книжку.
Croessmah вне форума
Старый 15.04.2016, 12:31   #106
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

я говорю сейчас не про код а про технологию копирования при возврате.

не нужно отступать

зачем было сделано что при возврате по значению обьект нужно копировать ?

можно ж было его уничтожать после присвоения или еще чего нибудь средствами компилятора как тут




create copy Base 0xbfa8c3ce 0xbfa8c3cc


*********************


operator 0xbfa8c3cd 0xbfa8c3ce


deleting Base 0xbfa8c3ce
RAFA91 вне форума
Старый 15.04.2016, 12:36   #107
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
зачем было сделано что при возврате по значению обьект нужно копировать ?
Ответ: ты сам так глупо написал код, не давая компилятору возможности оптимизации.
Цитата:
можно ж было его уничтожать после присвоения средствами компилятора как тут
Где? Такого вывода с этим кодом не было ни на студии, ни на gcc.
Croessmah вне форума
Старый 15.04.2016, 12:44   #108
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
можно ж было его уничтожать после присвоения или еще чего нибудь средствами компилятора как тут
а он не уничтожается?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 15.04.2016, 12:46   #109
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
а он не уничтожается?
Видимо он что-то пропустил

Кстати, возникла такая идея,
т.к. там закомментирован перемещающий конструктор,
то может он считает, что должен вызываться
конструктор перемещения, а не копирования?
Croessmah вне форума
Старый 15.04.2016, 12:49   #110
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а он не уничтожается?
уничтожается .

только я показал как должно было быть в с++ .

нету смысла создавать копии при возврата.

ПО ЗНАЧЕНИЮ

___________________________________ ________________________

можно ж было его уничтожать после присвоения или еще чего нибудь средствами компилятора как тут




ДОЛЖНО БЫЛО БЫ БЫТЬ ТАК




create copy Base 0xbfa8c3ce 0xbfa8c3cc


*********************


operator 0xbfa8c3cd 0xbfa8c3ce


deleting Base 0xbfa8c3ce
<<<<<<<<<<<<<<<<<-------------------------------------
RAFA91 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработчик перемещения mitiay Общие вопросы Delphi 1 11.05.2015 20:50
Отслеживание перемещения picturebox Aleksa91 C# (си шарп) 7 15.06.2014 14:55
Планирование перемещения squid90 Фриланс 3 27.12.2011 21:48
Тормоза перемещения по DBGrid artemavd БД в Delphi 17 12.10.2010 17:52
С++ (конструктор, деструктор, копирующий конструктор) Jane-sad Помощь студентам 2 01.10.2010 10:01