thi*_*khy 7 c++ pointers delete-operator
我在开源项目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;
}
Run Code Online (Sandbox Code Playgroud)
但我不知道这条线的意思:
*(&p) = NULL;
Run Code Online (Sandbox Code Playgroud)
在上面的行(p = NULL;)中,p被赋值为NULL.我认为它需要以另一种方式再次这样做.
Ada*_*eld 12
这完全没有意义.在普通条件下,一元*
和&
运算符是彼此相反的(有一些细节,就像表达式&*foo
不是左值,即使foo
是左值),尽管运算符重载可以改变这种行为.
但是,由于T*
无论类型如何总是一个指针类型T
,因此不可能使一元operator&
数重载T*
,因此*(&p)
仅相当于p
,并且分配NULL
给p
第二次是没用的.