问题详情

为什么析构函数通常声明为虚函数,而构造函数不能是虚函数?


时间:2022-01-01 08:41 关键词: CPP考试 计算机科学技术 大学试题 工学

答案解析

因为构造函数不被继承,而虚函数是要在派生类中重定义的。定义虚析构函数后,由于多态,当使用基类指针指向派生类对象时,会调用派生类的虚构函数,然后派生类的析构函数自动调用基本析构函数。不是虚的话,直接调用基类的析构函数了。如果派生类中有用new分配的内存,就无法释放。