virtual dtor



  • Hi,..

    wollte bloß mal fragen ob ich dass richtig gecheckt habe. einen vrituellen Dtor
    brauch man um den fall zu vermeiden das der Dtor der basisklasse vor dem Dtor
    der Inherit klasse aufgerufen, und somit der Dtor der abgeleiteten Klasse nicht
    mehr aufgerufen wird?

    Oder gibt es noch andere gründe?

    Greetz

    class Base
    	{
    	public:
    	 Base() { std::cout<<"Base Ctor\r\n"; };
    	/* virtual*/ ~Base() { std::cout<<"Base Dtor\r\n";};
    	};
    class Derived: public Base
    	{
    	public:
    		Derived() { std::cout<<"Derived Ctor\r\n";};
    		~Derived() {std::cout<<"Derived Dtor\r\n";};
    	};
    
    void kill_the_shit(Base *b)
    	{
    	 delete b;
    	};
    int _tmain(int argc, _TCHAR* argv[])
    {
    	Derived *blub=new Derived;
    	kill_the_shit(blub);
    
    	system("pause");
    	return 0;
    }
    


  • Der hat den gleichen Sinn, wie bei anderen Funktionen auch, ja.

    Ein virtueller Destruktor ermöglicht es dir einfach über einen Zeiger auf die Basisklasse auch das abgeleitete Objekt zu zerstören.



  • also hatte ich es doch richtig im sinn,..

    thx a lot 😉


Anmelden zum Antworten