理解析构函数

时间:2017-04-08 18:54:27

标签: 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在删除后不为空?

1 个答案:

答案 0 :(得分:4)

删除不会更改指针的值,而只会释放它指向的内存。删除后,相应的指针无效。 (删除也会调用析构函数)。

删除有效指针必须始终成功,否则它是未定义的行为。