c++ - 新构造函数抛出异常后的对象指针状态 - C++

标签 c++ visual-studio-2008 exception constructor

在 C++ 中,当新类构造函数抛出异常时,对象指针的状态是什么?以下面的代码为例:

CMyClass * pobjMyClass = (CMyClass *)0xA5A5A5A5;

try
{
    pobjMyClass = new CMyClass(); // Exception thrown in constructor
}
catch ( ... ) {}

当这段代码执行时,抛出异常后,pobjMyClass 的值是多少?指向 CMyClass 的无效实例的指针、0xA5A5A5A5NULL、一些随机的未初始化值,或其他什么?谢谢。

最佳答案

由于在赋值发生之前抛出了异常,因此 pobjMyClass 将是之前的任何内容 - 在您的情况下为 0xa5a5a5a5。

关于c++ - 新构造函数抛出异常后的对象指针状态 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4318494/

相关文章:

c++ - 检查 boost 属性树中的值是树还是终端值

c++ - 强制在堆栈中而不是全局分配 char[] (string)

java - 为什么在这种情况下允许抛出已检查的异常类型?

java - 如何在java类中处理和显示DataDecodeException日志

exception - 简单的 IPython 示例在 sys.exit() 上引发异常

c++ - 在没有 SWIG 的情况下使用 C++ 扩展 Python

c++ - 在 Linux 上的 eclipse 中清理项目不会删除 Debug/Release 文件夹

asp.net - 作为使用 Visual Studio 的 ASP.NET Web 开发人员,我应该安装 IIS 吗?

asp.net - Visual Studio asp.net 标记格式

c# - 在没有安装 MS Word 的情况下以编程方式创建 MS Word 文件