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

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

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

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

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

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

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Видимо он что-то пропустил

Кстати, возникла такая идея,
т.к. там закомментирован перемещающий конструктор,
то может он считает, что должен вызываться
конструктор перемещения, а не копирования?
та хз.
я думаю скоро и эту тему прикрою, надоели высказывания автора в духе
"мне так не нравиться, значит это не правильно(зачем так сделали, и тп)".
конструктива нет, одни крики, и полный отказ читать ответы.
Цитата:
нету смысла создавать копии при возврата.
есть, так как вы запросили это, а конструктора перемещения нет.
Цитата:
ДОЛЖНО БЫЛО БЫ БЫТЬ ТАК
согласно какой пятке?
обоснование будет?

сказал же, компилятор может отложить вызовы деструкторов до конца блока кода.

далее, вы оптимизацию включали-то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 15.04.2016 в 12:56.
Пепел Феникса вне форума
Старый 15.04.2016, 12:53   #112
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
только я показал как должно было быть в с++ .
ВЫ САМИ код написали так, что компилятор не может выкинуть копирование,
это ВЫ виноваты в том, что не знаете правил этого самого C++.
И как раз по правилам языка это копирование БУДЕТ, т.к. это ВЫ САМИ криворукий код написали.
Цитата:
ДОЛЖНО БЫЛО БЫ БЫТЬ ТАК
Смотри код, который я написал - там как раз так!
http://ideone.com/hVxmI9
И здесь я как раз дал компилятору возможность оптимизировать код и выбросить копирование.

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

Croessmah вы реально на приколе.

уже в сотый раз говорю забейте вы на тот код.



___________________________________ _________________

должно было быть в с++ .

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

ПО ЗНАЧЕНИЮ

___________________________________ ________________________

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




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




create copy Base 0xbfa8c3ce 0xbfa8c3cc


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


operator 0xbfa8c3cd 0xbfa8c3ce


deleting Base 0xbfa8c3ce <<<<<<<<<<<<<<<<<-------------------------------------
RAFA91 вне форума
Старый 15.04.2016, 12:57   #114
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

кстати говоря какого кода вывод вы демострируете?
это не код из онлайн компилятора уже.

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

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
я думаю скоро и эту тему прикрою, надоели высказывания автора в духе
?


вы ж по другому не можете.

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

вот такая от вас тут польза в помощи.

нельзя быть таким обитаемым батенька.
RAFA91 вне форума
Старый 15.04.2016, 12:58   #116
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
должно было быть в с++ .

нету смысла создавать копии при возврата.
Вам тысячный раз говорят!
Компилятор в этом коде этого сделать не может.
Код так написан. Загляни по ссылке, там нет копирования лишнего.
Цитата:
ДОЛЖНО БЫЛО БЫ БЫТЬ ТАК
Только в больной фантазии неосилятора :D
Croessmah вне форума
Старый 15.04.2016, 12:59   #117
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
вот такая от вас тут польза в помощи.
Ну если человеку говоришь что он не прав,
а он не понимает, то объяснять далее просто смысла нет
Croessmah вне форума
Старый 15.04.2016, 13:00   #118
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Компилятор в этом коде этого сделать не может.
:D
я тебе таких кодов вагон могу привести.

говорю еще раз забейте на код и читайте эту фразу









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

ПО ЗНАЧЕНИЮ

___________________________________ ________________________

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




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




create copy Base 0xbfa8c3ce 0xbfa8c3cc


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


operator 0xbfa8c3cd 0xbfa8c3ce


deleting Base 0xbfa8c3ce <<<<<<<<<<<<<<<<<-------------------------------------
RAFA91 вне форума
Старый 15.04.2016, 13:02   #119
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от RAFA91 Посмотреть сообщение
вы ж по другому не можете.

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

вот такая от вас тут польза в помощи.

нельзя быть таким обитаемым батенька.
потому что ты говоришь о каком-то другом коде и просто флудишь.

давай код на котором тестируешь в студию, тогда поговорим.
ты выложил один код, народ видит только его, а потом еще орешь что забейте на тот код.

насчет нельзя, я сам решу что мне можно, а что нет.

а вам уже пора выражаться ясно и с фактами, а не криками, вроде не школьник.
Цитата:
нету смысла создавать копии при возврата.
зависит от уровня оптимизации, если конструктор имеет побочное действие, он не должен быть выкинут.
Цитата:
я тебе таких кодов вагон могу привести.
ну так приводи, а не ори.
Цитата:
ДОЛЖНО БЫЛО БЫ БЫТЬ ТАК
не обязано. такое может быть при оптимизации. но может, не более.
зависит от кода в конструкторе копирования.

и да, не путаем оптимизацию и прямой результат компиляции.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 15.04.2016 в 13:08.
Пепел Феникса вне форума
Старый 15.04.2016, 13:10   #120
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
говорю еще раз забейте на код и читайте эту фразу
А чего её читать?
В ней нет ни одного аргумента.
Когда копирование должно быть, а когда нет,
зависит не от вашего "хочу", а от правил языка.
Какие правила и как применяются зависит от кода.
Нет кода - нечего обсуждать.

Вышеприведенный мной код демонстрирует выпиливание лишнего копирования.
Приведенный выше Вами код демонстрирует ситуацию,
когда компилятор этого сделать не может, потому как код такой.
Цитата:
нету смысла создавать копии при возврата.
Да что Вы говорите?
А давайте рассмотрим код:
Код:
X foo(const X& x_)
{
   //Здесь по логике должно быть так:
   //создаем временный объект
   //копируем временный объект
   //но компилятор оптимизирует код и построит этот временный объект
   //сразу в возвращаемом значении.
   //данный объект построен и принадлежит этой функции, 
   //так что здесь компилятор занимается оптимизацией
   return X(x_);
}

Код:
X foo(X x_)
{
   //Здесь по логике должно быть так:
   //копируем объект x_
   //компилятор не может выпилить это 
   //копирование отсюда - оно заложено логикой программы
   //параметр создавался не в этой функции, 
   //а в вызывающей, поэтому не ясно что там и как оно устроено.
   return x_;
}

Последний раз редактировалось Croessmah; 15.04.2016 в 13:14.
Croessmah вне форума
Закрытая тема


Купить рекламу на форуме - 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