public が指定されたメンバは, 次の方法でアクセスできる:
1. そのクラスをインスタンス化して, ドッド演算でアクセスする
2. そのクラスのインスタンスを指すポインタを通じて, アロー演算子でアクセスする
3. そのクラスのメンバ関数なからアクセスする.
private が指定されたメンバは, 次の方法でアクセスできる:
1. そのクラスのメンバ関数内からアクセスする.
つまり, そのクラスのインスタンスから, ドット演算子を使ってアクセスすることはできない. メンバ変数 private 指定する理由は, クラスの外側から自由に変数の値を書き換えられない.
C 言語では, グローバル変数はあまり使わない方がいいと書いたが, その理由がよく似ている.
実はアクセス指定子を省略することができる. 省略する場合は, クラスにはすべてのメンバが 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]