为什么在此方法中声明此变量会覆盖我的类成员(C ++)?

问题描述 投票:0回答:1

我正在尝试实现链接列表类。我有一个名为node的结构,它具有数据和node *,还有一个链表类,该链表类具有一个指向链表头节点的指针作为类成员。我为链接列表类编写了一个insert方法,该方法将数据插入第n个位置:

  void insert(int x, int n) {

        node* iterator = headNode;
        node* temp;
        temp->data = x;

        for (int i = 0; i < n-1; i++)
        {
            iterator = iterator->next;
        }
        temp->next = iterator->next;
        iterator->next = temp;
    }

但是,当我这样做时,头节点类成员被temp覆盖。使用cout我发现该行

        temp->data = x;

是覆盖它的行。有人可以解释为什么吗?顺便说一句,我能够通过使用new在堆上声明temp来解决覆盖问题,但是同样,有人可以解释为什么吗?

c++ memory-management heap-memory class-members stack-memory
1个回答
0
投票

@@ UnholySheep指出了in注释,我只是声明了一个指针而不创建节点对象,因此发生的是未定义的行为。非常感谢你。

© www.soinside.com 2019 - 2024. All rights reserved.