c++ - 了解析构函数

标签 c++

我有以下简单类 Foo:

class Foo {

};

然后我尝试运行以下单元测试代码:

Foo* foo = new Foo;

Assert::IsNotNull(foo);

delete foo;

Assert::IsNull(foo); //why is it not null?? I deleted it.

当我删除 foo 时,这个对象的内存被释放,所以 foo 应该指向 nullptr

为什么foo删除后不为null?

最佳答案

删除不会改变指针的值,只会释放它指向的内存。删除后,各自的指针失效。 (删除也会调用析构函数)。

删除一个有效的指针必须总是成功,否则就是未定义的行为。

关于c++ - 了解析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43299114/

相关文章:

c++ - 文件最后一行为空时的停止条件 C++

c++ - 调节后检索/调试当前 FPS?

c++ - 当您不知道传递给重写函数的参数时,在基类中创建重写方法?

c++ - (&) - 括号中的 & 符号 - 在这段代码中是什么意思?

C++ SetConsoleTextAttribute 更改字符串中的字符

c++ - 帮助在 gcc 中链接

c++ - 如何使用继承作为参数的 std::string?

c++ - 在函数内修改数组指针

c++ - QT类之间的连接

c++ - 泄漏和地址有什么区别?