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

Why does declaring this variable in this method overwrite my class member (C++)?

我正在尝试实现链表 class。我有一个名为 node 的结构,它有数据和一个 node*,还有一个链表 class,它有一个指向链表头节点的指针作为 class 成员。我写了一个链表class的插入方法,将数据插入到第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;
    }

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

        temp->data = x;

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

@UnholySheep 在评论中指出,我只是在没有创建节点对象的情况下声明了一个指针,所以发生的是未定义的行为。非常感谢你。