Здравствуйте, Аноним, Вы писали:
А>Простейшая иерархия
А>А>class Base
А>{
А>public:
А> Base(int)
А> {
А> Init();
А> }
А>protected:
А> virtual void Init() {....}
А>}
А>class ChildClass : public Base
А>{
А>public:
А> ChildClass(int aa):Base(aa) {}
А>protected:
А> virtual void Init() {....}
А>}
А>
А>При создании объекта класса ChildClass мы не попадаем в его Init, а идем через Init базового. Я что-то туплю, как-то я не так думал...
А>Это так надо?
В дочернем классе Init в конструкторе не вызывается. В родительском классе вызывается Init, не виртуальный, следовательно Base::Init. А виртуальным Init делать нельзя, так как в конструкторе вызывать виртуальные ф-ции нельзя.