C++ 什么时候需要虚析构函数
2017-10-25 本文已影响9人
赵者也
一般而言,如果一个类中包含一个或者多个 virtual 函数,则也应该包含一个虚析构函数。
这是因为,当对多态对象集合进行操作时,通常是通过基类指针删除这些对象,这会导致对析构函数的间接调用。
如果析构函数不为 virtual 类型,则编译时绑定将决定应该调用哪一个析构函数,从而可能导致派生对象的不完整析构。
一般而言,如果一个类中包含一个或者多个 virtual 函数,则也应该包含一个虚析构函数。
这是因为,当对多态对象集合进行操作时,通常是通过基类指针删除这些对象,这会导致对析构函数的间接调用。
如果析构函数不为 virtual 类型,则编译时绑定将决定应该调用哪一个析构函数,从而可能导致派生对象的不完整析构。