Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Вызов из базового класса ф-ции дочернего.


Автор: Neitron 18.10.2005, 18:36
Подскажите, можно ли вызвать из базового класса ф-ции дочернего класса в конструкторе базового класса?
Код

class Base{
protected:
        __fastcall Base(){Test();}
public:
        virtual void Test(){ShowMessage("I'm in Base");};
        void S(){Test();}
};
class Child : public Base{
public:
        void Test(){ShowMessage("I'm in Child");};

};


Child * CLD = new Child();
CLD->S();


Выводит "I'm in Base"

Но если вызвать S() будет выводить "I'm in Child".

Автор: Дрон 18.10.2005, 18:43
Neitron
Не-а smile

Т.к. конструкторы вызываются в порядке от базового к дочернему, то в момент работы конструктора базового класса дочерний ещё не инициализирован.

ЗЫ: На это очень многие попадаются smile smile

Автор: Neitron 18.10.2005, 18:47
Действительно. Не подумал,. Хотя подумал, но подумал неправильно)
А очень жалкоsmile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)