C++ の構造体とクラスの違いは何ですか? 質問する

C++ の構造体とクラスの違いは何ですか? 質問する

この質問は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キーワードは使用できません。

おすすめ記事