C++的delete p,p=NULL可以但为啥delete this,this=NULL不可以
//C++的delete p,p=NULL可以//但为啥delete this,this=NULL不可以
void Node::DeleteNode()
{
if (this->pLChild != NULL)
{
this->pLChild->DeleteNode();
}
if (this->pRChild != NULL)
{
this->pRChild->DeleteNode();
}
if (this->pParent != NULL)
{
if (this->pParent->pLChild == this)
{
this->pParent->pLChild = NULL;
}
if (this->pParent->pRChild == this)
{
this->pParent->pRChild = NULL;
}
}
delete this;
}
//像上面这段代码是删除一个二叉树链表的实现,递归删除子子孙孙节点后,执行自杀(delete this),但不可以把this置为NULL了,一般都是最好是要这么做的,这样以后可以通过判是否为NULL,来判二叉树链表是否为空。。
不知道有什么可以替代的方法~求指导 this指针并不是你定义的,对于Node类来说,this指针隐含的类型为: Node * const this;也就是说this指针指向的并非常量,但this指针本身是常量(因为this指针必定只能指向某个确定的对象),所以this=NULL企图对常量赋值是不允许的,
页:
[1]