在编译时检查销毁订单约束

时间:2012-05-16 09:13:05

标签: c++ destruction

有没有办法在编译时检查“A在B之前被破坏”形式的销毁订单约束?

3 个答案:

答案 0 :(得分:2)

我认为这不可行。以下面的代码为例:

int main(int argc, char **argv){
  Object A = new Object(), B = new Object();
  if(argc == 1){
    delete A;
    delete B;
  }else
  {
    delete B;
    delete A;
  }
}

在编译时你怎么知道首先调用哪个析构函数?

答案 1 :(得分:0)

您可以通过向destuctor添加命令来轻松检查。请参阅(例如此处以获取更详细的说明):http://msdn.microsoft.com/en-us/library/8183zf3x(v=vs.80).aspx

亲切的问候, 博

答案 2 :(得分:0)

固定为自动变量,无法修复动态分配对象。此外,如果您的问题是针对该类的成员对象,那么它是固定的。在类声明中首先列出的成员,它们首先被销毁。