我有一个链接列表类的简单实现,它具有指向我也已定义的节点对象的指针。C++构造函数似乎每次都返回指向同一对象的指针
函数insertHead创建一个新节点并将其插入到头部。然而,每当我调用该函数时,构造函数似乎每次都会返回一个指向同一对象的指针。 (我检查了使用GDB)
我正在粘贴这里的代码片段。有人可以让我知道,如果有什么似乎关闭?
void LinkedList::insertHead(int val){
Node temp(val);
if(head == NULL){
head = tail = &temp;
} else {
temp.setNext(head);
head = &temp;
}
}
类定义:
class LinkedList{
Node *head;
Node *tail;
...
class Node{
int val;
Node *next;
...
Node::Node(int x){
val = x;
next = NULL;
}
'temp',正如你正确命名它,有自动生命周期:你正在存储指向死对象的悬挂指针。 – Quentin
您正在保存一个指向局部变量的指针,该变量超出了范围,并在该函数结束时变为无效。指针是一个指向堆栈的指针,所以它可能每次都是一样的。如果您需要动态分配对象,请使用'new'或某种唯一或共享的指针。 –