在c++中删除指针对象
Delete pointer object in C++
我在开源项目X3C中阅读了以下删除指针对象的代码。
//! Delete pointer object.
/*!
ingroup _GROUP_UTILFUNC
param p pointer object created using 'new'.
*/
template<class T>
void SafeDelete(T*& p)
{
if (p != NULL)
delete p;
p = NULL;
*(&p) = NULL;
}
但是我不知道这句话的意思:
*(&p) = NULL;
在上面的行中(p = NULL;), p被赋值为NULL。我认为它需要以另一种方式再做一次。
完全没有意义。在一般情况下,一元*
和&
操作符彼此是相反的(有一些细节,比如表达式&*foo
不是左值,即使foo
是左值),尽管操作符重载可以改变这种行为。
然而,由于T*
始终是指针类型,而不管T
类型如何,因此不可能为T*
重载一元operator&
,因此*(&p)
相当于p
,并且将NULL
第二次赋值给p
是无用的。
相关文章:
- 为什么指针对象没有调用默认构造函数
- 如何访问双指针对象中的方法
- 如何使用智能指针对象执行成员函数指针
- 调用带有指针对象错误的指针变量
- 如何从模板类重载创建的指针对象上的运算符?
- C++指针对象的运算符重载
- 如何初始化数组指针对象
- 如何打印出唯一指针对象向量中的值(基于范围的循环)?C++
- C++指针对象差异
- 涉及继承,指针对象的交易以及何时进行的问题
- 表达式必须在C 中具有指针对象类型
- 下标需要数组或指针类型表达式必须具有指针对象类型
- 字符指针对象和相应的字符数组元素比较
- 如何在 c++ 中克隆为弱指针对象
- 指针对象使用CPP中的指针表达式进行比较
- Visual Studio中智能指针对象的自定义视图
- 使用指针 /对象 /模板参数正确构成
- 如果我确定只有一个线程一次处理指针/对象,则C/C 仍应使用同步
- 如何将值分配给指针对象 c++
- 更改智能指针对象,然后访问它