注意不能声明虚构造函数,但是可以声明虚析构函数
补充一下:当基类构造函数调用虚函数时,是不会调用派生类的虚函数;同样,基类函数被析构时,调用的也是基类中的虚函数。
一般来说,如果一个类的析构函数是个虚函数的话,那么它的派生而来的所有的子类的析构函数也是虚函数,并且在实用引用时可以动态绑定,以此来实现多态
如果想通过基类指针删除派生类对象时调用的是基类的析构函数!
也就是说,只在派生类写虚析构函数是万万不可得,造成内存泄漏很危险!在基类中写虚构函数,其所有得派生类析构函数都是虚析构函数!
为了不让内存泄漏,就要虚析构函数?
而为什么要用这个虚析构函数?
就是因为 通过指针来删除派生类对象时调用的时基类的析构函数,派生类的析构函数是没有执行的,依次派生类对象中动态分配的内存空间没有得到释放,内存泄漏,在对象消失后,这些内存空间既没有被继续使用,也没有被释放。