Страница 1 из 1

Как использовать ООП в WinAvr

Добавлено: Ср май 25, 2016 03:13:01
marengo
Класс я создал. А вот объект класса создать не получается! Полазив по интернету выяснил что оператор 'new' не поддерживается компилятором!
Как же тогда использовать ООП в WinAvr? Возможно кто-нибудь может дать пример того как создать объект (экземпляр) класса. Буду благодарен!

Re: Как использовать ООП в WinAvr

Добавлено: Чт май 26, 2016 23:57:44
YS
Как же тогда использовать ООП в WinAvr?
Никак. Вы не поверите, но существуют системы, на которых парадигма ООП не дает выигрыша, но, более того, дает существенный проигрыш в параметрах эффективности кода (размер, скорость выполнения). Небольшие контроллеры вроде AVR (а также STM8, MSP430, не слишком монструозные STM32) относятся именно к таким системам. Так что, если вы пишете под AVR, ваш выбор - процедурное/структурное программирование.

Если вам очень хочется странного, можете посмотреть, как ООП реализуется на платформе Arduino. Правда, я думаю, после того, как вы увидите, насколько нещадно такой подход выжирает память контроллера (если мне не изменяет память, мигание светодиодом занимает там что-то около полутора килобайт), вам расхочется действовать таким образом.

Что касается оператора new, то, чтобы он работал, необходим механизм динамического выделения памяти, который вам придется реализовывать самостоятельно. Кроме того, качественный менеджер памяти легко может сам занять всю память какого-нибудь младшего чипа из семейства AVR.

Re: Как использовать ООП в WinAvr

Добавлено: Пт май 27, 2016 07:44:31
ARV
marengo писал(а):Возможно кто-нибудь может дать пример того как создать объект (экземпляр) класса. Буду благодарен!
экземпляры должны создаваться статически - вот и вся проблема. для динамического, как было сказано, памяти не хватит.

при статическом создании экземпляров классов (если они грамотно разработаны, конечно) должен получаться достаточно компактный код, соизмеримый с аналогом на Си без плюсов.

Re: Как использовать ООП в WinAvr

Добавлено: Пт май 27, 2016 11:27:06
YS
если они грамотно разработаны, конечно
Как правило тот, кто может грамотно использовать C++, на чистом C пишет не хуже. :)

Re: Как использовать ООП в WinAvr

Добавлено: Пт май 27, 2016 11:48:41
ARV
Я и не говорю, что может быть хуже. Просто в некоторых случаях код С++ легче поддается модификации, а для кого-то может быть и проще написать в парадигме ООП.