classstruct は、本質的にはほぼ同じ機能を持つ。

どちらもクラス型(C++)であり、

主な違い

違いは主に、デフォルトのアクセス指定子である。

  • struct のメンバはデフォルトで public
  • class のメンバはデフォルトで private

また、継承のデフォルトアクセスも異なる。

  • struct の継承はデフォルトで public
  • class の継承はデフォルトで private
struct Base1 {};
struct Derived1 : Base1 {}; // public 継承
 
class Base2 {};
class Derived2 : Base2 {};  // private 継承

使い分けの慣習

機能差は小さいが、慣習として次のように使い分けられることが多い。

  • struct: 単純なデータの集まり
  • class: 不変条件を守りたい型や、内部実装を隠したい型

ただし、これはあくまで慣習であり、絶対的なルールではない。

補足

構造体でも、private メンバやメンバ関数を持つことはできる。 逆に、クラスでもすべてを public にして使うことはできる。

関連