C ++アクセス指定子


アクセス指定子

publicこれで、すべてのクラスの例に表示されるキーワードに精通しているはずです。

class MyClass {  // The class
  public:        // Access specifier
    // class members goes here
};

publicキーワードはアクセス指定子です。 アクセス指定子は、クラスのメンバー(属性とメソッド)にアクセスする方法を定義します。上記の例では、メンバーはpublic-です。これは、コードの外部からアクセスおよび変更できることを意味します。

しかし、メンバーをプライベートにして外の世界から隠したい場合はどうでしょうか。

C ++には、次の3つのアクセス指定子があります。

  • public-メンバーはクラス外からアクセスできます
  • private-クラス外からメンバーにアクセス(または表示)することはできません
  • protected-メンバーはクラスの外部からアクセスできませんが、継承されたクラスでアクセスできます。継承については後で詳しく説明します。

public次の例では、とprivateメンバーの違いを示しています。

class MyClass {
  public:    // Public access specifier
    int x;   // Public attribute
  private:   // Private access specifier
    int y;   // Private attribute
};

int main() {
  MyClass myObj;
  myObj.x = 25;  // Allowed (public)
  myObj.y = 50;  // Not allowed (private)
  return 0;
}

プライベートメンバーにアクセスしようとすると、エラーが発生します。

error: y is private

注:同じクラス内のパブリックメソッドを使用して、クラスのプライベートメンバーにアクセスすることができます。これを行う方法については、次の章(カプセル化)を参照してください。

ヒント:クラス属性をプライベートとして宣言することをお勧めします(できるだけ頻繁に)。これにより、自分自身(または他の人)がコードを台無しにする可能性が低くなります。これは、カプセル化の概念の主要な要素でもあり 、次の章で詳しく説明します。

注:デフォルトではprivate、アクセス指定子を指定しない場合、クラスのすべてのメンバーは次のようになります。

class MyClass {
  int x;   // Private attribute
  int y;   // Private attribute
};