第 6 章: アクセス指定子

アクセス指定子

アクセス指定子:

1. public
2. private
3. protected

public アクセス指定子

public が指定されたメンバは, 次の方法でアクセスできる:

1. そのクラスをインスタンス化して, ドッド演算でアクセスする
2. そのクラスのインスタンスを指すポインタを通じて, アロー演算子でアクセスする
3. そのクラスのメンバ関数なからアクセスする.

private アクセス指定子

private が指定されたメンバは, 次の方法でアクセスできる:

1. そのクラスのメンバ関数内からアクセスする.

つまり, そのクラスのインスタンスから, ドット演算子を使ってアクセスすることはできない. メンバ変数 private 指定する理由は, クラスの外側から自由に変数の値を書き換えられない.

C 言語では, グローバル変数はあまり使わない方がいいと書いたが, その理由がよく似ている.

カプセル化

メンバへのアクセスを, そのクラスのメンバ関数からだけしかできないように制限することを [カプセル (隠蔽化)] という.

カプセル化の方法は, private 指定子を使うこと.

デフォルトアクセス指定子

実はアクセス指定子を省略することができる. 省略する場合は, クラスにはすべてのメンバが private となる:

class CSample{
  int m_num; // private

  void Set(int num); // private
  int Get(); // private
}

途中から, アクセス指定子を付けることもできる:

class CSample{
  int m_num; // private

public:
  void Set(int num); // public
  int Get(); // public
};

C++ 言語では, クラスと構造体の一つの違いが:

クラスのデフォルト指定子は private
構造体のデフォルト指定子は public

構造体デフォルト指定子の様子:

struct CSample{
  int m_num; // public

  void Set(int num); // public
  int Get(); // public
};

注意:

C 言語の標準ヘッダは, C++ では別名のものが用意されている. [stdio.h] -> [cstdio], [string.h] -> [cstring]