1. ホーム
  2. c++

[解決済み] C++のstructとclassの違いは何ですか?

2022-03-20 18:16:36

質問

この質問は C#/.Netのコンテキストで既に質問されています。 .

さて、C++の構造体とクラスの違いについて教えていただきたいのですが。技術的な違いや、OO設計でどちらかを選択する理由についても教えてください。

まず、わかりやすい違いから説明します。

  • を指定しない場合は public: または private: 構造体のメンバはデフォルトでpublic、クラスのメンバはデフォルトでprivateです。

この他にも、C++の仕様の隅々にまで違いがあるはずだ。

どのように解決するのか?

クラスと構造体の2番目の違いを忘れていませんか?

規格を引用します(C++98からC++11の§11.2.2)。

がない場合 アクセス指定子 ベースクラスはpublicとみなされます。 派生クラスが宣言されたとき 構造体 と宣言されている場合はprivateと見なされます。 クラス .

また、念のため、より広く知られているクラスと構造体の違いは(11.2)で定義されています。

で定義されたクラスのメンバです。 キーワード クラス プライベート である。 デフォルトでは を定義したクラスのメンバは というキーワードで 構造体 または ユニオン パブリック をデフォルトで使用します。

その他の違い:キーワード class はテンプレートのパラメータを宣言するために使うことができますが struct キーワードは使用できません。