C++中为什么将基类中的析构函数定义为虚函数(virtual)?
当删除基类指针,而该指针实际指向的是派生类的时候,如果基类中的析构函数不声明为虚函数,在析构的时候,会直接按指针类型调用该类型的析构函数代码,因为指针类型是基类,所以直接调用基类的析构函数,不会调用派生类的析构函数,导致只有基类的内存被释放,派生类的没有释放,进而导致内存泄露。
C++中为什么将基类中的析构函数定义为虚函数(virtual)?
当删除基类指针,而该指针实际指向的是派生类的时候,如果基类中的析构函数不声明为虚函数,在析构的时候,会直接按指针类型调用该类型的析构函数代码,因为指针类型是基类,所以直接调用基类的析构函数,不会调用派生类的析构函数,导致只有基类的内存被释放,派生类的没有释放,进而导致内存泄露。