双链表的奇怪复制构造函数

时间:2011-11-14 03:10:28

标签: c++ copy-constructor doubly-linked-list

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

您好,

我的教授为我们分配了一份双重的家庭作业清单,在我绝对需要帮助之前,我一直避免寻求帮助,我就是这样。

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

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

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

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

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

我想我对整个Elem *&因为,从我记忆中,不要&和*取消对方?

谢谢,非常感谢任何帮助!希望这将有助于我未来的其他人:)

1 个答案:

答案 0 :(得分:2)

static Elem* copy(const Elem *oldHead)

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

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

如果只是

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 );