gpt4 book ai didi

C++ 找不到错误,+ 运算符重载将 2 个链表相加

转载 作者:行者123 更新时间:2023-11-27 23:42:19 25 4
gpt4 key购买 nike

问题发生在我使用 operator+ 重载 + 运算符以将 2 个列表加在一起时(如果长度不同,问题要求在第一个列表结束时结束)。 delete_position()之后都是我写的,上面的函数和main()都是prof提供的。

最佳答案

我看到的一个明显错误是在函数 operator+(List& a, List& b) 中:

Node* tempA = new Node;
Node* tempB = new Node;
tempA = &a.getHead();
tempB = &b.getHead();

您首先使用 new 将内存分配给 tempAtempB,然后将它们分配给其他地址。

这将导致:

  • 内存泄漏,因为您将无法删除 使用new 分配的内存。
  • 获取临时地址。你从 a.getHead()b.getHead() 得到的是临时的。

事实上,像 GCC 和 Clang 这样的编译器不会编译它,并且会发出这样的错误:

error: taking the address of a temporary object of type 'Node' [-Waddress-of-temporary]
tempB = &b.getHead();

正如@PaulMcKenzie 指出的那样,请查看您的复制构造函数。由于您的类有指针,因此您应该注意复制数据的方式。阅读此 question及其关于实现 copy* 函数的正确方法的答案。

关于C++ 找不到错误,+ 运算符重载将 2 个链表相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53551109/

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