我有一個鏈接列表類的簡單實現,它具有指向我也已定義的節點對象的指針。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'或某種唯一或共享的指針。 –