Цитата(Stas633 @ Nov 22 2008, 13:09)

Совершенно верно. Только ЧТО делать понятно, а вот что на счет того КАК делать?
Не соглашусь с Вами. В приведенной цитате речь идет о методах, т.е. виртуальных функциях . Которые естественно должны иметь свое "наполнение" в производных классах. Но я рассуждал не о наследовании виртуальных функций и полиформизме, а о наследовании virtual класса класса как virtual.
Зачем нужно, чтобы весь класс был виртуальным - надо только, чтобы методы были и этого достаточно
Цитата(Stas633 @ Nov 22 2008, 13:09)

Как я понимаю, виртуальный класс вовсе не "обязан" содержать виртуальные функции.
А зачем тогда он нужен - виртуальность нужна как раз только для методов
Цитата(Stas633 @ Nov 22 2008, 13:09)

Более того, виртульные функции можно создавать только в абстактнх классах. То есть объектов таких классов создано быть не может. Просто "не получится". Не так ли?
Еще как можно использовать - т.е. объявил класс СTimers1 как обычно, создал вирт.метод СTimers1::Update, затем породил класс СTimers2 от СTimers1 и переписал СTimers1::Update и создал два экземляра СTimers1 Timers1; и СTimers2 Timers2 и работаешь с ними.
Цитата(Stas633 @ Nov 22 2008, 13:09)

Извините, не понял к чему это... Я имел ввиду нецелесообразность обявления global объектов, если есть возможность сделать их локальными.
Я как понял вашу задачу: вы хотите, чтобы другие объекты через экземпляр класса DBGU общались с внешним миром - но ведь на PC-машинах все наши объекты общаются с внешним миром или через cin/cout или GUI
Цитата(Stas633 @ Nov 22 2008, 13:09)

Спорно. Если объект объявляется/выносится за пределы своего "ареала обитания", то разве это соответсвует принципу encapsulation? Зачем в список фруктовых деревьев сада вносить функцию измерения размера косточки плода? Ведь к этой функции все равно придется обращаться, как минимум, через Плод. (На точности примера не настаиваю)
А зачем почти что всем животным воздух?
Цитата(Stas633 @ Nov 22 2008, 13:09)

Так должно быть, но не всегда так есть. "Встроенный" Cstartup.s79 для IARARM НЕ СОДЕРЖИТ вызовов конструкторов до входа в main(). На форуме упомянуты способы введения такой инициализации (в частности, Сергеем Борщем).
Незамечал, я обычно всегда делаю свой Cstartup.s79, так что мог и ошибиться, но вроде еще с AVR глобаль.объекты инициализировал компилятор - даже пришлось убрать инициализацию из конструкторов, чтоб все происходило по порядку определяемому мною
Цитата(Stas633 @ Nov 22 2008, 13:09)

А почему?
Пока нужды не возникало использование friend, если и порывался. то находил другие пути выхода из ситуации, да и не все embedded компиляторы поддерживали это лет 4-6 назад.
Цитата(Stas633 @ Nov 22 2008, 13:09)

Т.е. данными?
Необязательно, м.б. и общие действия, но в принципе все равно все сводится к данным
Цитата(Stas633 @ Nov 22 2008, 13:09)

Другими словами, если не смог (к Вам никакого отношения не имеет!) написать на С++ используй static и пиши как на С...

Все проекты разрабатываются в Microsoft Visual Studio - при оформлении классом одновременно улучшается читабельность кода
Цитата(Stas633 @ Nov 22 2008, 13:09)

...
И все-таки, если класс не содержит ресурсов (переменных, данных), то будет ли формироваться избыточный код при его "многократном" наследовании?
Зависит от умности компилятора и линкера.