【问题标题】:Linked List implementation with structures or class?带有结构或类的链表实现?
【发布时间】:2011-10-25 20:37:03
【问题描述】:

我正在开始C++中的数据结构,在阅读时,我想到了以下sn-p,

template <class Node_entry>
struct Node {
// data members
Node_entry entry;
Node<Node_entry> *next;
// constructors
Node( );
Node(Node_entry, Node<Node_entry> *link = NULL);
};

谁能详细说明为什么作者选择一个结构而不是一个类来实现singly linked list?谢谢。

【问题讨论】:

  • C/C++ Struct vs Class的可能重复
  • 可能是因为他/她想教授算法和数据结构,不想因 OO 设计问题而分心。
  • @Alexandre C。我认为这不是重复的,因为这个问题专门针对链表。
  • @WTP:什么?这个问题专门关于类与结构。链接列表不是这个问题的任何明智答案的一部分。
  • @Alexandre:我知道结构和类之间的区别。我想知道的是,为什么作者在链表的情况下首选结构。谢谢

标签: c++ data-structures singly-linked-list


【解决方案1】:

他希望默认访问是公开的 - 这是 C++ 中类和结构之间的唯一区别

【讨论】:

  • 为了节省纸张和墨水在书中 - 1 行或至少一些额外的墨水来写 public:
【解决方案2】:

可能是因为在struct 中,所有成员默认都是public。在class 中,它们默认为private

如果作者选择class,他会这样写:

template <class Node_entry>
class Node {
public: // note this! <------------
// data members
Node_entry entry;
Node<Node_entry> *next;
// constructors
Node( );
Node(Node_entry, Node<Node_entry> *link = NULL);
};

【讨论】:

    【解决方案3】:

    structclass都定义了类,可以有方法、成员、构造函数等。

    唯一的区别是结构成员默认是公开的,而结构默认是公开继承的。

    this question

    【讨论】:

      【解决方案4】:

      struct 的默认成员为public,即对其外部的所有内容可见,而class 的成员默认为private。这是两个关键字之间的唯一区别(我相信)。

      【讨论】:

        【解决方案5】:

        从算法和数据结构的角度来看,使用结构或类没有区别!谈论算法或数据结构的书籍并不关心 OOP,例如,在Introduction to Algorithms 他们使用 pascal,有时使用伪代码。重要的是传达这个想法。作者可能会选择使用结构,因为他不想打扰读者关于 OOP 原则和最佳实践,他不想让你说为什么他用 setter 和 getter 将这个字段定义为 public 而不是 private。通过这种方式,您远离数据结构和算法。

        【讨论】:

          【解决方案6】:

          可能是因为他/她想教授算法和数据结构,不想因 OO 设计问题而分心。

          【讨论】:

            【解决方案7】:

            如果你从算法和数据结构的角度来做这件事,一切都很好,但是当涉及到生产时,结构的成员是公共的,所以对外部的一切都是可见的,但类默认是私有的

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-11-26
              • 2013-02-13
              • 2017-07-23
              • 2015-07-27
              • 2019-08-07
              • 2023-03-31
              • 2015-07-17
              相关资源
              最近更新 更多