Будет и переопределение операторов, будут и виртуальные функции.
Виртуальные буду использовать для работы с экранчиками.
Они же у меня двух типов, так чтобы в основном коде каждый раз не уточнять (при помощи #ifdef), функцию из какого драйвера вызвать - буду использовать виртуальные функции.
В основном коде будет только что то типа
COLOR_LCD *LCD = new COLOR_LCD();//если цветной
или
BLACK_LCD *LCD = new BLACK_LCD();//если черно-белый
приводим указатель на экранчик к указателю на базовый класс
пусть базовый класс называется LCD_BASE
тогда
LCD_BASE* Screen = LCD;
и далее просто используем виртуальные функции базового класса, во время выполнения автоматически будут вызываться нужные функции - или для черно-белого экрана, или для цветного.
Screen->print(0,0,"Hello!");
Screen->clear();
и т.д.
И наконец то избавлюсь от этих жутких #ifdef-ов.
Надеюсь - ничего не напутал (ещё буду уточнять).
Ардуинство - тот же самый C++, только все "кишки" (описания классов, шаблоны) спрятаны во всевозможные библиотеки.
С Ардуиной проблема в том, что пользователю ничего в "кишочках" поправить не дают.
У нас же все будет доступно (если захотим).
Код должен быть удобочитаем и самодокументированный.
Так что ничего плохого в Ардуино-style коде я не вижу.
И я понимаю, что это был сарказм.