从线程中
如果您需要从函数返回指向对象的指针,则答案谈到何时必须使用“new”来创建指向对象的指针。
但是,我下面的代码工作正常。我使用本地指针而不是为新指针分配一些内存。
node* queue::dequeue(){
if(head==0){
cout<<"error: the queue is empty, can't dequeue.\n";
return 0;
}
else if(head->next !=0){
node *tmp=head;
head=head->next;
tmp->next=0;
return tmp;
}
else if(head->next ==0){
node *tmp=head;
head=0;
tmp->next=0;
return tmp;
}
}
这是一个简单的 dequeue() 操作。我的 tmp 是一个本地指针。但我还是退货了。
归功于马赫什
我在 main() 中有以下语句
node a8(8); //node constructor with the value
因此 tmp 指向 head 指向的内容,而 head 指向不同的节点,如 a8。
由于 a8 在整个 main() 中有效,因此 tmp 在整个 main() 中也有效