C++中,在什么情况下析构函数要设置成虚函数?为什么?
时间: 2024-03-07 11:53:53 浏览: 60
浅谈C++基类的析构函数为虚函数
当一个类中含有虚函数时,如果这个类中还含有成员变量指向了堆内存中分配的对象,那么在使用 delete 操作符释放这个类的对象时,只会调用该对象所属类的析构函数,而不会调用其所继承的基类的析构函数,这就会导致基类指针指向的对象无法被正确销毁。
为了解决这个问题,我们需要将基类的析构函数设置为虚函数。这样在使用 delete 操作符释放这个类的对象时,会先调用其所继承的基类的析构函数,再调用该对象所属类的析构函数,从而正确地销毁基类指针指向的对象。
因此,当一个类中含有虚函数且可能被继承时,其析构函数应该设置为虚函数。这样可以保证在使用基类指针指向子类对象时,delete 操作符能够正确地释放对象。
阅读全文