[ grabber @ 28.12.2011. 14:41 ] @
Profesor na predavanju pomenu da je praksa destruktor kod bazne klase naznaciti kao virtual metod, ali nije objasnio zasto, nego da uzmemo to zdravo za gotovo. Eh sada mene zanima zasto je to tako, ako mi neko moze pojasniti na jednostavnom primjeru svrhu toga i kako bi bilo da ne naznacimo taj destruktor u baznoj klasi virtuelnim
[ deerbeer @ 28.12.2011. 14:46 ] @
Odgovor :Da bi se destruktori redom pozivali od nasledjenih klasa ka baznim .

Code:

#include iostream.h
class Base
{
       public:
          Base(){ cout<<"Constructing Base";}

     // this is a destructor:
    virtual  ~Base(){ cout<<"Destroying Base";}
    


};

class Derive: public Base
{
        public:
           Derive(){ cout<<"Constructing Derive";}

           ~Derive(){ cout<<"Destroying Derive";}
 };

void main()
{
        Base *basePtr = new Derive();
        delete basePtr;
}



Pokreni program sa i bez kljucne reci virtual za destruktor u Base klasi pa ces videti razliku .