|
|
|||||||
С++ идиомы31.07.2016, 19:20. Показов 149642. Ответов 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
С++ идиомы - обсуждение
|
|
фрилансер
6440 / 5634 / 1127
Регистрация: 11.10.2019
Сообщений: 14,978
|
||||||
| 14.03.2021, 21:21 | ||||||
|
JeyCi,
1
|
||||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 16.03.2021, 14:56 | ||
|
Вообще я убежден, что CRTP должен быть элементом дизайна, а не оптимизации. Нет никакого смысла вводить его только ради оптимизации. Должны быть более фундаментальные причины.
1
|
||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 16.03.2021, 15:44 | |
|
JeyCi, я вам тут прикрепил pdf-ку со статьей из журнала C++ Report от 95 года по CRTP. Думаю полезно будет ознакомиться для полного понимания.
2
|
|
|
Любитель чаепитий
|
|||||||
| 16.03.2021, 16:36 | |||||||
|
Не по теме:
Кликните здесь для просмотра всего текста
1
|
|||||||
|
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
|
|||
| 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
|
||||||
|
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
|
||
| 18.03.2021, 08:57 | ||
|
p.s. для меня могут быть только 4 фундаментальные причины:- для увеличения скорости, - для минимизации памяти, - для минимизации писанины, - для того, чтобы не потерять что-нибудь (что приводит к memory leaks)... разве есть ещё какие-то более фундаментальные причины, например для использования CRTP?..
0
|
||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||
| 18.03.2021, 09:16 | |||
|
И суть моих слов в том, что дизайн должен быть основным критерием, а не производительность. В смысле, что производительность - это следствие, а не первопричина.
0
|
|||
|
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
|
|||
| 18.03.2021, 13:07 | |||
спасибо за view: performance <-design-> optimization (& 1<->3)
0
|
|||
| 18.03.2021, 15:45 | |
|
Не по теме: Да хорош тему засерать и тролиху кормить.
0
|
|
|
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
|
||
| 23.03.2021, 18:40 | ||
|
только сейчас поняла, почему clone() - рудимент от фабрики - может быть любая др. функция...
0
|
||
|
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
|
||||
| 18.05.2021, 19:55 | ||||
|
да, с CRTP-фабрикой, - примером с wiki, - я всё-таки поспешила...
=== - полагаю, желание/потребность подрядить ленивые вычисления/методы и может стать фундаментальным аргументом в пользу выбора CRTP (иных пока не вижу)... только я пока не выбирала ленивые методы... как бы не вижу в них преимуществ... разве что по памяти (чтобы функции-члены не инстанцировались в случае, если вдруг потом могут и не понадобится)... имхо Добавлено через 4 минуты p.s. вероятно, для подмешивания этот трюк в основном используется... так же
0
|
||||
|
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
|
||||||||||
| 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 | |
|
Помогаю со студенческими работами здесь
35
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|