当子类对象经由一个父类指针被删除,而父类带着一个non-virtual析构函数,实际执行时通常发生的是子类成分没被销毁。任何CLASS只要带有virtual函数都几乎确定应该也有一个virtual析构函数。
标准string及STL容器不含任何virtual,它们当父类时,请注意。
解决方法:
析构时先调用最深层子类,然后编译器创建一个对相对父类的析构。
当子类对象经由一个父类指针被删除,而父类带着一个non-virtual析构函数,实际执行时通常发生的是子类成分没被销毁。任何CLASS只要带有virtual函数都几乎确定应该也有一个virtual析构函数。
标准string及STL容器不含任何virtual,它们当父类时,请注意。
解决方法:
析构时先调用最深层子类,然后编译器创建一个对相对父类的析构。