2011-08-12 42 views
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的實施結構而不是類?謝謝。

+0

可能的重複[C/C++結構與類](http://stackoverflow.com/questions/2750270/cc-struct-vs-class) –

+3

可能因爲他/他想教算法和數據結構,不想分散OO設計問題。 – john

+0

@Alexandre C.我認爲這不是重複的,因爲這個問題特別是關於鏈表。 – 2011-08-12 14:13:23

回答

1

structclass都定義類,並能有方法,成員,構造函數等

唯一的區別是結構成員默認爲公用,且結構默認繼承公開。

參見this question

3

可能因爲在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); 
}; 
1

通過一個struct的默認成員public即他們外面的一切而class成員可見在默認情況下private。這是兩個關鍵字之間的唯一區別(我相信)。

4

他想的缺省訪問是公共的 - 這是類和結構之間的唯一區別在C++

+0

爲了節省書中的紙張和墨水 - 一行或至少一些額外的墨水寫「公共:」。 – foxx1337

1

但從算法和數據結構來看,存在使用結構或類做起來沒有什麼區別!正在討論算法或數據結構的書不關心OOP,例如,在Introduction to Algorithms中他們使用的是pascal,有時使用僞代碼。重要的是要傳達這個想法。作者可能會選擇使用結構,因爲他不想打擾讀者關於面向對象的原則和最佳實踐,他不希望你說嘿爲什麼他將這個領域定義爲公開的而不是私有的定義者和獲取者。通過這種方式,您將遠離數據結構和算法。

+0

謝謝。恰好解釋道 –

0

可能是因爲他/她想教算法和數據結構,並且不想分散OO設計問題。