Subj : Re: Calling virtual functions in destructors (use BCB for test) To : borland.public.cpp.borlandcpp From : Bob Gonder Date : Mon Sep 29 2003 12:08 pm Thomas Maeder [TeamB] wrote: >> class Base >> { >> public: >> virtual ~Base(){Func();} >> virtual void __fastcall Func(void){ShowMessage("Base");} >> }; >> class Derived : public Base >> { >> public: >> virtual ~Derived(){} >> virtual void __fastcall Func(void){ShowMessage("Derived");} >> }; > >The reason for all this is that if class Derived had a data member, its >destructor would already have been executed when Func() is called from the >Base destructor. If Derived::Func() were called, it could inadvertently access >that already destructed data member, which would have drastic consequences. What would happen if Base::Func() were pure virtual? .