【问题标题】:Copy Constructor in Linked List C++链表 C++ 中的复制构造函数
【发布时间】:2017-01-16 11:41:15
【问题描述】:

我是一年级学生,在浏览我的链接列表笔记时,我看到使用了一个复制构造函数。以前在学习基于 ADT 数组的实现时,我没有看到复制构造函数。为什么在链表中使用复制构造函数?实现复制构造函数重要吗?

【问题讨论】:

  • 你已经尝试了什么?
  • 无论您是复制链接列表的实例还是复制其中的元素:每当您编写一个管理自身资源的类时,请考虑三原则(参见stackoverflow.com/a/4172724/2630032
  • 我刚刚经历了复制构造函数的实现。它看起来类似于添加节点。我只是不明白为什么它们是链表中的深层构造函数。

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


【解决方案1】:

如果没有实际看到代码,就无法确定,但我会说,对于链表实现,极有可能需要复制构造函数和赋值运算符,以便prevent your class from having broken copy semantics 关于构造函数执行的动态分配和析构函数执行的取消分配。

如果您在过去看到一个没有这些的实现,很有可能它是坏的/有问题的/错误的,这在互联网上一点也不稀奇那里存在无穷无尽的可怕初学者实现,并且在未经同行评审的教程中被当作“你应该如何做”。遗憾的是,这在大学教材中甚至相当普遍。

a good book 学习 C++,并了解 Rule of Three
然后删除你的实现并使用std::list!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    相关资源
    最近更新 更多