在 C++ 中,当新类构造函数抛出异常时,对象指针的状态是什么?以下面的代码为例:
CMyClass * pobjMyClass = (CMyClass *)0xA5A5A5A5;
try
{
pobjMyClass = new CMyClass(); // Exception thrown in constructor
}
catch ( ... ) {}
当这段代码执行时,抛出异常后,pobjMyClass
的值是多少?指向 CMyClass
的无效实例的指针、0xA5A5A5A5
、NULL
、一些随机的未初始化值,或其他什么?谢谢。
最佳答案
由于在赋值发生之前抛出了异常,因此 pobjMyClass 将是之前的任何内容 - 在您的情况下为 0xa5a5a5a5。
关于c++ - 新构造函数抛出异常后的对象指针状态 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4318494/