在我的构造函数中,如果其中的任何代码抛出,我必须销毁任何剩余的资源。我想避免编写重复的代码,所以我只在 catch 块中调用析构函数,而不是释放任何已创建的资源。这安全吗?
我知道如果构造函数抛出,则不会调用析构函数,因此我尝试在 msvc 中编译一些代码,但似乎没有任何问题,但我不确定这是否只是运气。
Object::Object(){
try{
// Initialize multiple resources here.
}catch(...){
this->~Object(); // Is this safe?
throw;
}
}
Object::~Object(){
// release multiple resources, if initialized.
}