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