如何调用所有析构函数?

时间:2016-08-23 09:36:35

标签: c++ c++11 destructor

我有一个大问题。当我抛出异常或调用std :: terminate或std :: exit时,对象析构函数不会运行。这是问题,我的代码充满了这些语句,因为我认为这些语句正在调用析构函数。

我如何解决这个问题?我不能改变类的结构,我有10K的代码和许多类。

void Function(int Stage)
{
    switch (Stage)
    {
        case 0: 
            //Somehow call the destructors
            break;
        case 1:
            //initialize
            break;
        default:
           //Give an error message and call the destructors
   }
}

1 个答案:

答案 0 :(得分:1)

析构函数应该在异常等时自动运行..这正是它们首先被发明的原因。

也许您使用new创建了对象?在这种情况下,您需要显式delete它们(然后运行析构函数)。