こんにちは、
C++ In Nutshell book、inchapter 6:classes、 undersアクセス指定子、以下に言及:
クラス定義では、メンバーおよび基本クラスのデフォルトアクセスはプライベートです。構造体の定義では、デフォルトはパブリックです。 これがクラスと構造体の唯一の違いですが、慣例により、一部のプログラマーはPOD classesおよびclass =を他のすべてのクラスに使用します。
私の質問は次のとおりです。
ありがとう。
他の違いは
template<class T> ...
許可されますが、
template<struct T> ...
ではありません。
構造体で関数を定義することで、他に違いがないことを自分で証明できます。 C++で構造体とクラスについて教えていた大学の教授でさえ、これを学ぶことに驚いたことを覚えています(学生によって修正された後)。しかし、私はそれを信じています。ちょっとおもしろかった。教授は違いが何であるかを言い続け、学生は「実際にあなたも構造体でそれを行うことができます」と言い続けました。最後に教授。 「OK、違いは何ですか」と尋ねると、学生は、唯一の違いはメンバーのデフォルトのアクセシビリティであると彼に通知しました。
簡単なGoogle検索では、PODは「Plain Old Data」の略であることが示唆されています。
PODクラスは、データメンバーのみを持ち、他には何もないプレーンオールドデータクラスです。同じことについてstackoverflowに関するいくつかの質問があります。 こちら を見つけてください。
また、C++では構造体のメンバーとして関数を使用できますが、Cでは構造体のメンバーとして関数を使用できません。Cの構造体のメンバーとして関数へのポインターが必要です。
OK、PODはプレーンな古いデータを意味します。これは通常、structs
without任意のメソッドを指します。これらのタイプはその後、一緒に属する複数のデータを構造化するために使用されるためです。
メソッドを持たない構造体については、構造体にメソッドがあることを何度も見てきましたが、これが不自然になるとは思いません。
1)C++の唯一の違いです。
2)POD: プレーンな古いデータ 他のクラス-> PODではありません