Re: Не понял. Что за ерунда. Это так и должно быть?
От: sc Россия  
Дата: 26.08.11 19:08
Оценка: -1
Здравствуйте, Аноним, Вы писали:

А>Простейшая иерархия


А>
А>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 делать нельзя, так как в конструкторе вызывать виртуальные ф-ции нельзя.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.