Это моё личное предвзятое мнение. Любое совпадение с реальностью является случайным и непреднамеренным.
-
- Совершенно верно. Все свойства объекта (порт, пин, режим)
"хранятся" в его типе. Сам объект не будет занимать память, даже
если я создам его. И он умеет выполнять действия, присущие этому
типу (или объекту). VladislavS.(464 знак., 13.01.2022 15:19)
- Т.е. вы используете шаблоны как (супер-)препроцессор, для генерации
и проверки кода статического во время компиляции. Тут кто-то свой
пример кольцевого буфера на препроцессоре с "##"-директивами кидал.
Суть, примерно та же, но за много лет такая генерация кода не очень
распространена. Впрочем, я благодарен вам за ответы и дискуссию. - Costic(13.01.2022 16:53)
- Я бы не называл это генерацией кода. Это скорее сочетание двух вещей: VladislavS.(1564 знак., 14.01.2022 08:16)
- Не, создание объекта по любому резервирует минимум 1 байт памяти,
потому что у объекта должен быть уникальный адрес. - =AlexD=(13.01.2022 16:46)
- Объект пустой, адрес его я не использую. Оптимизатор его чики-чики. VladislavS.(235 знак., 13.01.2022 17:07)
- если я правильно понял: экземпляр объекта "размазывается по
исполняемому коду" столько раз сколько упоминается (типо inline). В
обычных Си экземпляр объекта занимает память "один раз", а его
функции вызываются столько раз сколько надо. - Zoro(13.01.2022 17:17)
- У этих объектов нечем занимать память, переменных членов класса в них нет. Статические методы вырождаются в обычные функции, которые обладают свойством хорошо инлайниться, так как определены в описании класса. Точно так же как и в С они могут быть один один раз в коде и вызываться из разных мест. Это уже на усмотрение оптимизатора. На самом деле, нет никакой необходимости вообще создавать эти объекты. Это я пример просто для понимания сути происходящего привёл. Намного VladislavS.(288 знак., 13.01.2022 17:57)
- если я правильно понял: экземпляр объекта "размазывается по
исполняемому коду" столько раз сколько упоминается (типо inline). В
обычных Си экземпляр объекта занимает память "один раз", а его
функции вызываются столько раз сколько надо. - Zoro(13.01.2022 17:17)
- Объект пустой, адрес его я не использую. Оптимизатор его чики-чики. VladislavS.(235 знак., 13.01.2022 17:07)
- Вот это я понимаю, вот с этого и надо было начинать агитировать :) symbions(83 знак., 13.01.2022 15:38)
- С литературой сложно. Применительно к эмбедду вообще всё по нулям.
Я начинал с Г.Шилдта, но он уж очень устарел. Если только совсем
никаких знаний по С++ нет, то можно по нему основы изучить. Но
потом С++17 и С++20 придётся самостоятельно подтягивать. Сейчас
много докладов с разных тематических конференций на тытрубе
выкладывают, особенно после выхода новых стандартов. Попадаются
очень интересные. Но это надо увлекаться этим, иначе тяжело. - VladislavS.(13.01.2022 16:14)
- Вот Евгений список выложил symbions(35 знак., 13.01.2022 20:16, ссылка)
- Нет литературы - тогда не взлетит - 3m(13.01.2022 16:53)
- С литературой сложно. Применительно к эмбедду вообще всё по нулям.
Я начинал с Г.Шилдта, но он уж очень устарел. Если только совсем
никаких знаний по С++ нет, то можно по нему основы изучить. Но
потом С++17 и С++20 придётся самостоятельно подтягивать. Сейчас
много докладов с разных тематических конференций на тытрубе
выкладывают, особенно после выхода новых стандартов. Попадаются
очень интересные. Но это надо увлекаться этим, иначе тяжело. - VladislavS.(13.01.2022 16:14)
- Т.е. вы используете шаблоны как (супер-)препроцессор, для генерации
и проверки кода статического во время компиляции. Тут кто-то свой
пример кольцевого буфера на препроцессоре с "##"-директивами кидал.
Суть, примерно та же, но за много лет такая генерация кода не очень
распространена. Впрочем, я благодарен вам за ответы и дискуссию. - Costic(13.01.2022 16:53)
- Совершенно верно. Все свойства объекта (порт, пин, режим)
"хранятся" в его типе. Сам объект не будет занимать память, даже
если я создам его. И он умеет выполнять действия, присущие этому
типу (или объекту). VladislavS.(464 знак., 13.01.2022 15:19)