最終更新:2026-10-15
C++ struct と class の違い¶
著者について:¶
個人公式アカウント(WeChat):

CとC++におけるstructの内容については:struct那些事を参照
一般的に言えば、struct はデータ構造の実装体と見るのが適切であり、class はオブジェクトの実装体と見るのが適切です。
違い:
最も本質的な違いは、デフォルトのアクセス制御です
デフォルトの継承時のアクセス権限。struct は public で、class は private です。
struct はデータ構造の実装体として、デフォルトのデータアクセス制御は public ですが、class はオブジェクトの実装体として、デフォルトのメンバ変数のアクセス制御は private です。
よくある質問¶
struct と class の唯一の違いは?¶
デフォルトのアクセス権と継承方法です。struct は public、class は private。それ以外は C++ では完全に等価です。
struct にコンストラクタや仮想関数は持てる?¶
持てます。C++ の struct はクラスであり、コンストラクタ・仮想関数・テンプレートなど全機能を利用できます。
いつ struct を使うべき?¶
慣習では、不変条件のない単純なデータのまとまりには struct、カプセル化や不変条件が出たら class を使います。
関連トピック¶
- C++ 純粋仮想関数と抽象クラス | C++那些事
- C++ assert アサーション | C++那些事
- C++ ビットフィールド | C++那些事
- C 言語による C++ 多態の実現 | C++那些事
- C++ const 詳解:定数・const ポインタとポインタ const の違い | C++那些事
- C++ const ファミリー | C++那些事
- C++ 間接参照演算子 * | C++那些事
- C++ 初期化と代入 | C++那些事
- C++ 複数戻り値の書き方 | C++那些事
- C++ mutable キーワード | C++那些事