析构函数在什么情况下应该声明为虚函数