Реализация связанного списка со структурами или классом?

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


person Community    schedule 12.08.2011    source источник
comment
возможный дубликат C / C ++ Struct vs Class   -  person Alexandre C.    schedule 12.08.2011
comment
Вероятно, потому, что он / она хотел обучать алгоритмам и структурам данных и не хотел отвлекаться на проблемы объектно-ориентированного проектирования.   -  person john    schedule 12.08.2011
comment
@Alexandre C. Я думаю, что это не дубликат, потому что этот вопрос конкретно о связанных списках.   -  person    schedule 12.08.2011
comment
@WTP: Что? Этот вопрос конкретно о классе и структуре. Связанные списки не являются частью разумного ответа на этот вопрос.   -  person Alexandre C.    schedule 12.08.2011
comment
@Alexandre: Я знаю разницу между структурой и классом. Я хотел знать, почему автор предпочел структуру здесь в случае связного списка. Спасибо   -  person    schedule 12.08.2011
comment
Если вы знаете разницу между структурой и классом, я не понимаю, почему вы приняли ответ, который только объясняет эту разницу. Если вы действительно хотите знать, почему автор решил сделать всех участников общедоступными, то я думаю, что комментарий @john является наиболее близким к ответу (к которому я бы добавил краткости).   -  person Luc Touraille    schedule 12.08.2011
comment
@John, пожалуйста, опубликуйте это как ответ.   -  person    schedule 21.08.2011
comment
@JustAnotherProgrammer: Конечно, я мог бы справиться с некоторой репутацией, только что потеряв ее из-за того, что я недостаточно серьезно относился к этому сайту. Спасибо.   -  person john    schedule 21.08.2011


Ответы (6)


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

person Nemanja Trifunovic    schedule 12.08.2011
comment
Чтобы сэкономить бумагу и чернила в книге - 1 строчку или хоть немного чернил, чтобы написать public: . - person foxx1337; 13.08.2011

Вероятно, потому что в 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);
};
person Community    schedule 12.08.2011

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

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

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

person Alexandre C.    schedule 12.08.2011

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

person Dan    schedule 12.08.2011

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

person K''    schedule 12.08.2011

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

person john    schedule 21.08.2011