2

在 C++ 中启动数据结构,在阅读时,我想到了以下片段,

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?谢谢。

4

7 回答 7

5

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

于 2011-08-12T14:11:07.883 回答
3

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

如果作者选择 a 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);
};
于 2011-08-12T14:10:21.943 回答
1

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

于 2011-08-12T18:28:56.230 回答
1

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

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

看到这个问题

于 2011-08-12T14:10:01.313 回答
1

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

于 2011-08-12T14:10:38.213 回答
0

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

于 2011-08-21T09:52:12.647 回答
0

如果您是从算法和数据结构的角度来做的,那么一切都很好,但是当涉及到结构的生产成员时,结构的成员是公共的,因此对外部的所有内容都是可见的,但类默认情况下是私有的

于 2021-08-04T04:50:30.890 回答