この質問はC#/.Netのコンテキストですでに質問されています。
今、C++ の構造体とクラスの違いを知りたいです。技術的な違いと、OO 設計でどちらかを選択する理由について説明してください。
まず明らかな違いから始めましょう:
public:
または を指定しない場合private:
、構造体のメンバーはデフォルトでパブリックになり、クラスのメンバーはデフォルトでプライベートになります。
C++ 仕様のわかりにくい部分には、他にも違いが見つかるはずです。
ベストアンサー1
クラスと構造体の間の 2 番目の微妙な違いを忘れています。
標準規格(C++98 から C++11 の §11.2.2)では次のように述べられています。
基本クラスにアクセス指定子がない場合、派生クラスがstructとして宣言されているときは public が想定され、クラスがclassとして宣言されているときは private が想定されます。
完全を期すために、クラスと構造体のより広く知られている違いは(11.2)で定義されています。
キーワードclassで定義されたクラスのメンバーは、デフォルトでプライベートです。キーワードstructまたはunionで定義されたクラスのメンバーは、デフォルトでパブリックです。
追加の違い: キーワードはclass
テンプレート パラメータを宣言するために使用できますが、struct
キーワードは使用できません。