Реализация связанного списка со структурами или классом? - PullRequest
2 голосов
/ 12 августа 2011

Я запускаю структуры данных в 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? Спасибо.

Ответы [ 6 ]

4 голосов
/ 12 августа 2011

Он хотел, чтобы доступ по умолчанию был общедоступным - это единственное различие между классами и структурами в C ++

3 голосов
/ 12 августа 2011

Вероятно, потому что в struct все члены по умолчанию publicclass они 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);
};
1 голос
/ 12 августа 2011

С точки зрения алгоритмов и структур данных, нет никакой разницы между выполнением этого с использованием структуры или классов! Книги, которые говорят об алгоритмах или структуре данных, не заботятся об ООП, например, в Введение в алгоритмы они используют паскаль и иногда псевдокод. Важно донести идею. Автор может выбрать использование структур, потому что он не хочет беспокоить читателя о принципах ООП и лучших практиках, он не хочет, чтобы вы говорили, почему он определил это поле общедоступным, а не частным с установщиками и получателями. таким образом вы далеки от структуры данных и алгоритмов.

1 голос
/ 12 августа 2011

По умолчанию члены struct являются public, т. Е. Видны всему, что находится вне их, тогда как члены class по умолчанию private. Это единственная разница между двумя ключевыми словами (я считаю).

1 голос
/ 12 августа 2011

struct и class определяют классы и могут иметь методы, члены, конструкторы и т. Д.

Единственное отличие состоит в том, что по умолчанию элементы структуры являются открытыми, а структуры по умолчанию наследуются публично.

См. этот вопрос .

0 голосов
/ 21 августа 2011

Возможно, потому что он / она хотел преподавать алгоритмы и структуры данных и не хотел отвлекаться на вопросы проектирования ОО.

...