class LinkTest{
public:
LinkTest(){
}
void start(){
List list;
Node * n ;
for(int i = 0; i < 5; i++){
//using pointer
// n = new Node(i);
// list.add(n);
//not using pointer
Node n(i);
list.add(&n);
}
list.displayAll();
}
};
class List{
public:
Node * first, *last;
List(){
first = last = NULL;
}
void add(Node *n){
if(first == NULL){
first = last = n;
}else{
last->next = n;
n->prev = last;
last = n;
}
}
void displayAll(){
while(first != NULL){
first->display();
first =first->next;
}
}
};
我有一些Java的经验,但我是新来的C++。这里我做一个链表测试。声明对象
如果我使用指针,我会得到正确的输出(0到4)。但是,如果我不使用指针并且像使用本地声明一样使用,那么输出就像是无限的4。有人可以向我解释这个吗?
如果我是正确的,本地声明“Node n(i)”会将n放入堆栈,那么这是否意味着在下一个循环中n将被替换为新的n(i + 1)?或只是n(i + 1)将被添加到堆栈?为什么输出是一堆4的?