2

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

你好,

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

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

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

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

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

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

我想我对整个 Elem *& 业务感到困惑,因为据我所知,不要 & 和 * 相互抵消?

谢谢,任何和所有的帮助都非常感谢!希望这将有助于将来在我的位置上的其他人:)

4

1 回答 1

2
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 );
于 2011-11-14T03:18:10.893 回答