众所周知,如果构造函数抛出,那么所有完全构造的子对象都会以相反的顺序被销毁,包括成员数据和各种基类。但是,非委托构造函数不会调用析构函数。对于委托构造函数,当进入构造函数主体时,对象已经被构造,但构造仍在继续。因此,如果委托构造函数从其体内抛出异常,是否会调用类的析构函数?
class X
{
public:
X();
X(int) : X() { throw std::exception(); } // is ~X() implicitely called?
~X();
};