構造体とは?配列やクラスとの違いと実践的な使い方を徹底解説

構造体とは?配列やクラスとの違いと実践的な使い方を徹底解説に関する基本知識を徹底的にまとめました。要点を確実におさえることができます。

「データをまとめる」という説明を聞くと、オブジェクト指向言語を学んだ人なら「それならクラス(class)と同じではないか?」という疑問を抱くはずです。実際、C言語から発展したC++において、構造体とクラスの関係性は非常によく議論されるテーマです。

両者の最も大きな違いは、「データのみを保持する箱(受動的)」か、「データとそれを操作する手続き(メソッド)を一体化してカプセル化するもの(能動的)」かという点にあります。

比較項目構造体(struct)クラス(class)設計時の判断基準主な用途純粋なデータの保持(POD: Plain Old Data)データと振る舞いのカプセル化・抽象化ビジネスロジックを持たせるかどうかC++でのデフォルトアクセス権public(全メンバが外部から参照可)private(内部からのみアクセス可)隠蔽性(情報隠蔽)が必要な場合はクラス継承とポリモーフィズム可能だが慣例として行わないことが多い標準的に利用される中核機能オブジェクト階層を組むならクラスメモリ・オーバーヘッド極めて小さい(余計な仮想関数テーブル等なし)仮想関数(virtual)使用時にポインタ分増加極限の軽量さ・高速性が求められる場合は構造体

C++言語の規格上は、structとclassの違いはメンバおよび継承のデフォルトの公開範囲(publicかprivateか)のみです。しかし、現場のコーディング規約では「状態の検証や副作用を伴う操作が必要ならクラス」「単なる値の入れ物(座標や設定値など)なら構造体」という明確な使い分けルールが広く採用されています。

高橋 健太

高橋 健太

ライフスタイル編集者

Webメディアでの編集・執筆歴10年。読者の好奇心を刺激するストーリー作りを心がけています。

Share this article
Twitter Facebook Pinterest