Ошибки, баги, вопросы - страница 2199
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
обычно временные объекты удаляются не сразу, а в конце контекста. в С++ если не ошибаюсь это прямо в стандарте прописано.
хотите быстрого удаления - управляйте контекстом.
Правда придется сделать оператор =
Спасибо! В СД сообщили, что планируют исправить текущее поведение, но по срокам не определено.
Цветные линии (уровни) при предпросмотре (не печатал, но вероятно и на печати так) графика для печати в ЧБ.
Терминал Билд 1795
Windows 7 64
Если начать оптимизацию, а потом прервать ее спустя 30 минут, то терминал зависает, и его никак не остановить.
В диспетчере задач плодятся агенты MetaTester64(8шт).
После этого запустить терминал не удается. Надо ждать или перегружать компьютер.
у Всех так?
Что снова с форумом? Начался день и начались нереальные тормоза. Страницы грузятся то быстро, то в течении секунд 30.
ркн, наверное... с пушами наблюдается проблемы на др сервисах.. вроде как телеграм работает через них..
Нахожусь вне России, сайт все равно иногда подвисает. Но у меня так не один месяц. Привык.
Спасибо! Получается, что return объекта и "=" при определении объекта идут через доп. конструктор.
Хотелось бы на самом деле наглядную таблицу где-то посмотреть, в каких случаях идут вызовы конструкторов (и каких), а в каких - операторов. Сейчас все на уровне интуиции, а она сбоит, конечно.
Вы лучше не очень то расчитывайте на какие-то конкретные правила, компиляторам разрешено весьма вольно оптимизировать такие вещи (rvo, nrvo, copy elision, может ещё какие оптимизации спокойно вырежут лишнее). Копирующий конструктор и оператор "равно" должны делать одни и те же действия (не нужно закладывать в них разное поведение). Есть один хороший подход, называется "copy-and-swap idiom", если позволяет английский, то тут детально описано https://stackoverflow.com/questioncopy-and-swap idioms/3279543/what-is-the-copy-and-swap-idiom.
Если коротко, то пишется одна swap функция, которая используется во всех конструкторах и операторах (мы уменьшаем количество кода, и получаем одинаковое поведение в результате чего не паримся о том, что там компилятор вызовет, вырежет, заоптимизирует).
"Выделенные строки вызывают вопросы. Почему временные объекты не грохнулись сразу, как были использованы? Т.е. до вывода тридцати. "
Правильно вызывают вопросы, думаю. Временные объекты должны были разрушиться после двоеточия.
ЗЫ: я там код немного подправил, т.к. копирующий конструктор (не перемещающий) нужен в любом случае. Для мкл выгода не столь очевидна из-за отсутствия rvalue ссылок.Вы лучше не очень то расчитывайте на какие-то конкретные правила, компиляторам разрешено весьма вольно оптимизировать такие вещи (rvo, nrvo, copy elision, может ещё какие оптимизации спокойно вырежут лишнее). Копирующий конструктор и оператор "равно" должны делать одни и те же действия (не нужно закладывать в них разное поведение). Есть один хороший подход, называется "copy-and-swap idiom", если позволяет английский, то тут детально описано https://stackoverflow.com/questions/3279543/what-is-the-copy-and-swap-idiom.
Если коротко, то пишется одна swap функция, которая используется во всех конструкторах и операторах (мы уменьшаем количество кода, и получаем одинаковое поведение в результате чего не паримся о том, что там компилятор вызовет, вырежет, заоптимизирует).
"Выделенные строки вызывают вопросы. Почему временные объекты не грохнулись сразу, как были использованы? Т.е. до вывода тридцати. "
Правильно вызывают вопросы, думаю. Временные объекты должны были разрушиться после двоеточия.
Спасибо, в СД уже предупредили о планах по RVO.