双重链表的奇怪复制构造函数
Strange copy constructor for a 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 *&因为,在我的记忆中,我没有& &;和*相互抵消?
谢谢,任何和所有的帮助是真的很感激!希望这将帮助其他人在我的位置在未来:)
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++17复制构造函数,在std::unordereded_map上进行深度复制
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 当从函数参数中的临时值调用复制构造函数时
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 复制构造函数、赋值运算符C++
- std::ofstream 作为类成员删除复制构造函数?
- 复制构造函数C++无法正确复制指针
- 关于复制构造函数的一个棘手问题
- 为什么调用复制构造函数而不是移动构造函数?
- 填充上编译器生成的复制构造函数之间的不一致
- C++ 对象指针数组的复制构造函数
- C++ 基本 CTOR 说明 - 为什么不调用赋值/复制构造函数
- 防止在复制构造函数中隐式调用基构造函数
- 为用户定义的类正确调用复制构造函数/赋值运算符
- 具有已删除移动和复制构造函数的类的就地构造
- 复制构造函数隐式转换问题
- 复制构造函数中的递归调用