C++ public private アクセス指定子の使い方

クラス内にメンバ変数、メンバ関数を定義する際には、
アクセス指定子と言うモノを考慮しなくてはなりません。

クラスのメンバを
クラスの外からアクセスできる部分できない部分に区別する事ができます。

クラスの外からアクセスできれば、
外側から、メンバ変数に代入したり、メンバ変数の値を読み出したり、
メンバ関数を呼び出したり・・・

と言った事が可能です。

逆に、クラスの外からアクセスできない設定ならば、
外側から、メンバ変数に代入したり、メンバ変数の値を読み出したり、
メンバ関数を呼び出したり・・・

と言った事が不可能になります。

「クラスの外から」と言うのは、普通の関数内、
又は別のクラスのメンバ関数内からアクセスできるか。
と言う意味で、
「クラスの中から」と言うのは、
自クラスのメンバ関数内からアクセスできるか。
と言う意味です。

実際に使用するアクセス指定子は3つです。

アクセス指定子説明
publicクラス外からアクセス可能
クラス内からアクセス可能
派生クラスからアクセス可能
privateクラス外からアクセス不能
クラス内からアクセス可能
派生クラスからアクセス不能
protectedクラス外からアクセス不能
クラス内からアクセス可能
派生クラスからアクセス可能

※アクセス指定子は、1つ1つのメンバ変数、関数に対して設定可能です。
※派生クラスやprotectedについては、クラスの継承とは?で説明しています。

アクセス指定子を使った例

#include <iostream>

using namespace std;

class hito {
int age;       // アクセス指定子記述なしの場合は
           // privateとみなされる
public:
int sinchou;     // public指定のメンバ変数

private:
int taiju;      // private指定のメンバ変数

void show_age() {                                 // private指定の
      cout << "年齢は" << age << "です。" << '\n'; // メンバ関数
}

public:
void show_sinchou() {                                 // public指定の
      cout << "身長は" << sinchou << "です。" << '\n'; // メンバ関数
}

private:
void show_taiju() {                                 // private指定の
      cout << "体重は" << taiju << "です。" << '\n'; // メンバ関数
}

};

アクセス指定子なしの場合は、privateとみなされますが、
明示的に書いた方が分かりやすいと思います。

タイトルとURLをコピーしました