|
|
|||||||
С++ идиомы31.07.2016, 19:20. Показов 160241. Ответов 34
Метки нет (Все метки)
Перевод статей 1 и 2. Будет постепенно обновляться. Желающие внести вклад могут писать в ЛС.
Переведенные идиомы: self-assignment in an assignment operator Scope Guard Shrink-to-fit Checked delete Pointer To Implementation Получение адреса(ака взятие адреса aka Address-of) nullptr Iterator Pair Coercion by Member Template
14
|
|||||||
| 31.07.2016, 19:20 | |
|
Ответы с готовыми решениями:
34
С++ идиомы - обсуждение
|
|
фрилансер
6486 / 5714 / 1133
Регистрация: 11.10.2019
Сообщений: 15,241
|
||||||
| 14.03.2021, 21:21 | ||||||
|
JeyCi,
1
|
||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
||
| 16.03.2021, 14:56 | ||
|
Вообще я убежден, что CRTP должен быть элементом дизайна, а не оптимизации. Нет никакого смысла вводить его только ради оптимизации. Должны быть более фундаментальные причины.
1
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
|
| 16.03.2021, 15:44 | |
|
JeyCi, я вам тут прикрепил pdf-ку со статьей из журнала C++ Report от 95 года по CRTP. Думаю полезно будет ознакомиться для полного понимания.
2
|
|
|
Любитель чаепитий
|
|||||||
| 16.03.2021, 16:36 | |||||||
|
Не по теме:
Кликните здесь для просмотра всего текста
1
|
|||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,547
|
|||
| 16.03.2021, 20:20 | |||
|
DrOffset, спасибо... начинаю понимать, как создаётся язык (что и есть цель ООП по сравнению с процедурным пр-ем), паттерны и Finite State Machine
... - прямо откровения от автора ... интересные... особенно понравилась фраза
Pros: 1) шаблон генерит функции для потомков авоматически, чтобы их не писать во всех потомках - в классическом варианте 2) по расширенной версии с базовым классом... использование перекрёстного приведения (своеобразный dynamic-cast)
вообще, интересный трюк - наследоваться от базового и от template'ового... - наверно, даже таким способом и страховку от "алмаза смерти" можно изобрести?... не пробовала ещё... только вот получить наследника второй очереди - с этим наследуемым виртуальным clone(), задаваемым в шаблоне, чтобы не прописывать его во всех наследниках, - уже вроде не получится .... Добавлено через 6 минут P.S. значит new от строк 63-65 надо потом delete.. т.е. они, вероятно, не от-move-ились в unique_ptr, а, наверно, от-copy-лись... простите за выражения
0
|
|||
| 17.03.2021, 07:09 | |
|
0
|
|
| 17.03.2021, 07:31 | |
|
0
|
|
| 17.03.2021, 07:31 | ||||||
|
Не по теме: JeyCi, утечка там вот тут:
0
|
||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,547
|
||
| 18.03.2021, 08:57 | ||
|
p.s. для меня могут быть только 4 фундаментальные причины:- для увеличения скорости, - для минимизации памяти, - для минимизации писанины, - для того, чтобы не потерять что-нибудь (что приводит к memory leaks)... разве есть ещё какие-то более фундаментальные причины, например для использования CRTP?..
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
|||
| 18.03.2021, 09:16 | |||
|
И суть моих слов в том, что дизайн должен быть основным критерием, а не производительность. В смысле, что производительность - это следствие, а не первопричина.
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,547
|
|||
| 18.03.2021, 13:07 | |||
спасибо за view: performance <-design-> optimization (& 1<->3)
0
|
|||
| 18.03.2021, 15:45 | |
|
Не по теме: Да хорош тему засерать и тролиху кормить.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,547
|
||
| 23.03.2021, 18:40 | ||
|
только сейчас поняла, почему clone() - рудимент от фабрики - может быть любая др. функция...
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,547
|
||||
| 18.05.2021, 19:55 | ||||
|
да, с CRTP-фабрикой, - примером с wiki, - я всё-таки поспешила...
=== - полагаю, желание/потребность подрядить ленивые вычисления/методы и может стать фундаментальным аргументом в пользу выбора CRTP (иных пока не вижу)... только я пока не выбирала ленивые методы... как бы не вижу в них преимуществ... разве что по памяти (чтобы функции-члены не инстанцировались в случае, если вдруг потом могут и не понадобится)... имхо Добавлено через 4 минуты p.s. вероятно, для подмешивания этот трюк в основном используется... так же
0
|
||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,547
|
||||||||||
| 19.05.2021, 10:42 | ||||||||||
Кликните здесь для просмотра всего текста
- всё-таки доп. уровень косвенности в CRTP через друзей может помочь и избежать "Алмаза смерти" (подробнее здесь - смысл friend в подмешивании)... === и так же (по последнему линку) - это попытка избавиться от большого количества static_cast'ов при реализации CRTP-паттерна, которая как раз и заключается в выносе всех static_cast'ов на верх. уровень иерархии, а чтобы оттуда не получить ромбовидного наследования - использование template'а, принимающего параметром тоже template (а не конкретный type)
в общем, CRTP, конечно, вариант, когда все типы известны на этапе компиляции, - для статического полиморфизма... но всё-таки глубокие иерархии всё равно не стоит делать... а диспетчеризация через visit и variant в std даёт нужное и без иерархий... появление std::variant -- всё-таки большой шаг вперёд был в std... имхо
0
|
||||||||||
| 19.05.2021, 10:42 | |
|
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|