1#include <iostream>2 using namespacestd;3 classP4 {5 Public:6 P () {}7 Virtual~p () {cout<<"called the destructor of the base class! "<<Endl;}8 Virtual voidShow ()9 {Tencout<<"called the output function of the P class"<<Endl; One } A }; - - classQ: PublicP the { - Public: - Q () {} -~q () {cout<<"a destructor for a derived class was called! "<<Endl;} + voidShow () - { +cout<<"called the output function of the Q class"<<Endl; A } at }; - voidCallshow (P *obj) - { -Obj->Show (); - } - voidMainvoid) in { -P *s=NewQ; to Callshow (s); + delete s; -System"Pause"); the}
Remove the base class show () in front of virtual, running the result:
Plus the base class show () in front of virtual, run the result:
Remove the virtual in front of the base class destructor and run the result:
The results can be clearly concluded by running the result:
When not defined as virtual, which class's function is called with the pointer (P *s) of which class, when virtual is added, the
Object (new Q), the function that calls which class. Concepts and usage are simple, but more important techniques.
The function of virtual destructor