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デフォルトであります。

作者がを選択した場合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

structどちらもクラスをclass定義し、メソッド、メンバー、コンストラクターなどを持つことができます。

唯一の違いは、構造体のメンバーはデフォルトでパブリックであり、構造体はデフォルトでパブリックに継承することです。

この質問を参照してください。

于 2011-08-12T14:10:01.313 に答える
1

デフォルトでは、aのメンバーstructpublic外部のすべてに表示されますが、aのメンバーはclassデフォルトで表示されますprivate。これが2つのキーワードの唯一の違いです(私は信じています)。

于 2011-08-12T14:10:38.213 に答える
1

アルゴリズムとデータ構造の観点から、構造またはクラスを使用してそれを行うことに違いはありません!アルゴリズムやデータ構造について話している本は、OOPを気にしません。たとえば、アルゴリズムの概要では、パスカルを使用しており、場合によっては擬似コードを使用しています。重要なのはアイデアを伝えることです。著者は、OOPの原則とベストプラクティスについて読者に迷惑をかけたくないので、構造を使用することを選択できます。セッターとゲッターでこのフィールドをプライベートではなくパブリックに定義した理由をあなたに言わせたくありません。このようにして、データ構造とアルゴリズムから遠く離れています。

于 2011-08-12T18:28:56.230 に答える
0

おそらく、彼/彼はアルゴリズムとデータ構造を教えたかったので、OO 設計の問題で気を散らしたくありませんでした。

于 2011-08-21T09:52:12.647 に答える