Jat*_*tin 0 c++ pointers linked-list delete-operator
以下是从单个链接列表尾部删除元素的代码的一部分:
int SLList::deleteFromTail()
{
int el = tail->info;
//if the list has only one element
if(head == tail) {
delete head;
head = tail = 0;
}
else {
//some code here...
}
return el
}
Run Code Online (Sandbox Code Playgroud)
这里head和tail是指向LL的第一和最后一个元素,分别.
在我们设置if之后的上面的块delete head中head = tail = 0.
但是在我们删除之后,我们head如何才能将它的价值设定为某种东西?(NULL在这种情况下)
头是一个pointer.你正在删除一个object指向的pointer,而不是它pointer本身
考虑这个例子:
Foo *foo = new Foo(); //foo does not store Foo object. Just an adress of created object.
//do some stuff
delete foo; //object is deleted
foo = new Foo(); //create another Foo and make foo point to it
Run Code Online (Sandbox Code Playgroud)
编辑
指针只是一个对象的地址.写入delete head时删除头部指向的对象,但即使删除后head pointer也会指向与之前相同的位置.但是取消引用它(例如*head)会导致问题.
| 归档时间: |
|
| 查看次数: |
918 次 |
| 最近记录: |