gpt4 book ai didi

c++ - 双向链表的奇怪复制构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:57:10 34 4
gpt4 key购买 nike

请注意我的作业标签。与所有家庭作业一样,对直接回答实际编码的有用建议表示赞赏。不过,请随意直接回答我的任何概念性问题。

你好,

我的教授给我们分配了一个双向链表作为家庭作业,我一直避免寻求帮助,直到我绝对需要它,而我就在这里。

他为我们提供了头文件,我们必须为其创建一个类,并且必须完美地遵循头文件。他执行复制构造函数的方式是让我们编写一个辅助函数,我们只需调用复制构造函数。

在正常情况下,我可以很容易地做到这一点,但这次他给了我们一个非常奇怪的辅助函数签名:

// copys chain at oldHead to newHead.
static void copy(Elem *&newHead, const Elem *oldHead)

这是复制一个名为 Elems 的结构链:

struct Elem 
{
Information info;
Elem *next;
Elem *back;
};

我想我最困惑的是整个 Elem *& 业务是什么,因为据我所知,& 和 * 不会相互抵消吗?

谢谢,非常感谢任何和所有的帮助!希望这对以后处于我这个位置的其他人有帮助:)

最佳答案

static Elem* copy(const Elem *oldHead)

可能是一个潜在的功能。你拿走旧的 Head 并返回新的克隆 Head。

他选择的是通过引用传递指针。

如果只是这样

static void copy(Elem * newHead, const Elem *oldHead)
{
newHead = new Elem();
}

类似上面的内容。函数外部看不到对 newHead 的任何更改。

下同。 x 按值传递。在函数 Addten 返回后,对 x 的任何更改都将被遗忘。你的 x 恰好是一个指针。

   void Addten( int x )
{
x = x + 10;
}

int x = 10;
Addten( x );

关于c++ - 双向链表的奇怪复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8116884/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com