0

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

4

3 回答 3

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;
  }
}

您如何在编译时知道首先调用哪个析构函数?

于 2012-05-16T09:15:49.410 回答
0

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

亲切的问候,博

于 2012-05-16T09:19:52.023 回答
0

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

于 2012-05-16T09:26:47.997 回答