如果在对象的构造函数中抛出异常,析构函数会被调用吗?还是说这是未定义行为?(这就是我不愿意说我的编译器做了什么的原因。)
struct foo()
{
foo(){
throw "bar";
}
~foo(){
/*am I called*/
}
};
foo f;
~foo
没有被调用,但是由于数据成员已经完全构造,因此数据成员的析构函数仍然会被调用。 - Simple