Flat Leon Works

アプリやゲームを作ってます。

【C++】classとstructの違い

C++にはメンバを持てる存在が3つ存在します。それはclassとstructとunionです。unionはちょっと特殊なので置いておいて、classとstructにはどんな違いがあるのでしょうか。

違いはデフォルトのアクセス指定子のみ

実はclassとstructの違いはデフォルトのアクセス指定がprivateかpublicかだけです。他は全く同じです。

具体的には以下のアクセス指定子です。

  • メンバ
  • 基底クラス
class Base{};
class A : Base // アクセス指定をしていないので private継承
{
    int m_Value; // アクセス指定をしていないので private
};
struct B : Base // アクセス指定をしていないので public継承
{
    int m_Value; // アクセス指定をしていないので public
};

classとstructの使い分け

オブジェクト指向におけるクラスとして定義したい場合にclassを。データを格納するだけの構造体として定義したい場合にstructを使うのが一般的だと思います。ですが、ちょっとしたクラスでpublicを指定するのが面倒な場合はstructを使用するのもいいんじゃないかなと思います。