C++ 在编译时检查销毁顺序约束
有没有办法在编译时检查“a在B之前被销毁”形式的销毁顺序约束?我认为这是不可能的。以以下代码为例:C++ 在编译时检查销毁顺序约束,c++,destruction,C++,Destruction,有没有办法在编译时检查“a在B之前被销毁”形式的销毁顺序约束?我认为这是不可能的。以以下代码为例: 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; } } 在编译时,您如何知道首先调用哪个析构函数?您可以通过向析构函
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;
}
}
在编译时,您如何知道首先调用哪个析构函数?您可以通过向析构函数添加命令来轻松检查这一点。请参阅(此处示例了解更多详细说明): 亲切问候,,
Bo它对于自动变量是固定的,对于动态分配的对象不能固定。另外,如果您的问题是针对类的成员对象,那么是的,它是固定的。在类声明中首先列出的成员将首先被销毁。(部分)是“自动对象”。对动态物体说“不”,哎呀,真丢脸。谢谢@SteveJessop,修复了。这不是在编译时,而是在运行时。