【发布时间】:2010-06-25 09:36:35
【问题描述】:
我是否必须这样做:
~MyClass()
{
delete[] my_data_;
my_data_ = nullptr;//DO I HAVE TO WRITE THIS LINE?
}
谢谢。
【问题讨论】:
标签: c++ destructor
我是否必须这样做:
~MyClass()
{
delete[] my_data_;
my_data_ = nullptr;//DO I HAVE TO WRITE THIS LINE?
}
谢谢。
【问题讨论】:
标签: c++ destructor
不,它只是杂乱无章的代码,没有实际用途和can be even optimized away by the compiler。无论如何,一旦析构函数返回对象的生命周期结束并且没有合法的方法可以访问它 - 无论如何尝试都会导致未定义的行为。
【讨论】:
delete[] my_data_;
应该做所有你需要的,在你使用它之后,将 my_data_ 设置为 nullptr 是没有必要的。
【讨论】:
没有。一旦析构函数完成,就无法合法访问该指针,因此它的最终值是什么并不重要。
【讨论】: