假设以下代码:

Foo* p = new (std::nothrow) Foo();

如果我们的堆内存不足,“p”将等于0。

如果我们没有内存不足,但Foo的构造函数抛出异常,该怎么办?该异常是否会被“new”和“p”的nohrow版本“掩盖”,并且将p设置为0?...还是将从Foo的构造函数中抛出的异常使它脱离函数?

最佳答案

不,不会。 nothrow仅适用于对new的调用,不适用于构造函数。

10-08 08:24