c++ 是否需要在用户定义和特定于类的删除运算符中处理 nullptr。?

标签 c++ language-lawyer delete-operator nullptr

用户定义的和特定于类的删除运算符是否需要像标准库中的运算符那样忽略 nullptr


并行discussion在谷歌群组。

最佳答案

来自[expr.delete],

If the value of the operand of the delete-expression is a null pointer value, it is unspecified whether a deallocation function will be called as described above.

所以听起来像是您的用户定义或特定于类的删除运算符来处理 nullptr

在 [class.free] 的其他地方,当描述类的释放函数时,具有虚拟析构函数的类可以具有基于动态类型调用的释放函数。在这种情况下,释放函数不需要检查 nullptr。

关于c++ 是否需要在用户定义和特定于类的删除运算符中处理 nullptr。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42032760/

相关文章:

c++ - 对具有重复键的对象进行排序

c++ - 删除的构造函数 - MSVC 报告错误,Clang 没有

c++ - 如何在删除操作中推导出多态对象的大小?

c++ - C++ 中的运算符 new 和 delete

c++ - 删除[]的行为

c++ - 在 vs2015 的可变参数模板中找不到重载的成员函数

c++ - 为什么在 C++ 中将 "using namespace"包含到头文件中是个坏主意?

c++ - 通过动态内存管理防止自动变量销毁

c++ - 同样的 clang ,std::initializer_list 程序与 -std=c++14/-std=c++17 的结果不同

c - OS X sigaction 错误地设置 sa_mask