gpt4 book ai didi

c++ - C++中删除指针对象

转载 作者:可可西里 更新时间:2023-11-01 18:25:55 26 4
gpt4 key购买 nike

我在开源项目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 是什么类型,因此不可能为 重载一元 operator& >T*,所以*(&p) 等同于p,并将NULL赋值给p第二次没用。

关于c++ - C++中删除指针对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6728631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com