主要是因为c++的多态性,父类的指针可以指向子类的对象,当直接调用delete该指针时,若析构函数是虚函数,会先调用子类的析构函数,再调用父类的析构函数。若析构函数不是虚函数,则c++会采用静态绑定的方式,因为指针是父类类型的,所以就仅仅调用了父类的析构函数,此时该子类对象就没有得到正常的析构。
说说析构函数为什么定义为虚函数?
最新推荐文章于 2024-09-20 21:14:24 发布
主要是因为c++的多态性,父类的指针可以指向子类的对象,当直接调用delete该指针时,若析构函数是虚函数,会先调用子类的析构函数,再调用父类的析构函数。若析构函数不是虚函数,则c++会采用静态绑定的方式,因为指针是父类类型的,所以就仅仅调用了父类的析构函数,此时该子类对象就没有得到正常的析构。