C++将父类的析构函数定义为虚函数,下列正确的是哪个?正确答案: A
A 释放父类指针时能正确释放子类对象 B释放子类指针时能正确释放父类对象 C这样做是错误的 D以上全错
解析: C++中假设有基类为fa,它的派生类为son,如果有*fa = new son();在delete fa或者释放*fa的时候将只会调用基类的析构函数;如果基类的析构函数为虚函数,在delete fa或者释放*fa的时候会先调用派生类(这里也就是son)的析构函数,再调用基类的析构函数。如果不是virtual,那么撤销fa指针时,将不会调用子类的析构函数,造成了内存泄露。