有没有办法在编译时检查“A在B之前被破坏”形式的销毁订单约束?
答案 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)
固定为自动变量,无法修复动态分配对象。此外,如果您的问题是针对该类的成员对象,那么它是固定的。在类声明中首先列出的成员,它们首先被销毁。