C++アクセス指定子
アクセス指定子
ここまでで、すべてのクラス例で登場するpublic
キーワードにはすっかり慣れたでしょう。
例
class MyClass { // The class
<strong>public:</strong> // Access specifier
// class members goes here
};
public
キーワードはアクセス指定子です。アクセス指定子は、クラスのメンバー (属性やメソッド) にアクセスする方法を定義します。上記の例で、メンバーはpublic
になっています、これはコードの外部からアクセスして変更できることを意味します。
しかし、メンバーを非公開にして外の世界から隠したい場合はどうすればよいでしょうか?
C++には、次の3つのアクセス指定子があります。
public
- メンバーはクラス外からアクセス可能private
- メンバーにアクセスできません (またはクラスの外からprotected
- メンバはクラスの外からアクセスすることはできませんが、継承されたクラスではアクセスすることができます。継承については後で詳しく説明します。
次の例では、public
とprivate
メンバーの違いを説明します。
例
class MyClass {
<strong>public:</strong> // Public access specifier
int x; // Public attribute
<strong>private:</strong> // 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
};
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。