前回のお話で、クラスによってアクセス制御が出来るという話をしました。
では、何故そのような処理が必要になるのでしょうか?
例えば、クラス ClassTest が持つ変数(メンバ変数) data は
0~9 の値以外が入っていると今後の処理で致命的な問題が出るプログラムだったとします。
今までの構造体では
ClassTest.data = 20;
としてしまえば、このような問題を未然に防ぐことは出来ず、
プログラマに全てをゆだねてしまう状態でした。
しかし、クラスではこのような直接データを代入するような行為は
アクセス違反となり、コンパイルすることが出来ないので この問題は解決できます。
では、次に data に値を代入している setValue() 関数へ一工夫加えてみましょう。
-----
void setValue( int value ){
if( value >= 0 && value <= 9 ){
data = value;
}
}
-----
こうすれば、valueが0以上で9以下の場合のみdataへ代入することになりますので、
絶対に ClassTestのメンバ変数 data へは 0~9 しか代入されることはなく、
より安全なプログラムを記述することが出来るのです。