我想知道对象是否是动态分配的,构造函数是否抛出异常,是否仍然需要删除该对象?
class Doom
{
public:
Doom() { throw 0; }
private:
int pad;
};
int main()
{
try
{
// memory is allocated for Doom but construction fails
// is the memory deallocated if construction fails here ?
Doom* doom = new Doom();
}
catch(int ex)
{
// ...
}
}
答案 0 :(得分:4)
没有。没有什么可以删除,因为对象永远不会被构造。编译器将负责释放已分配的内存。