イントロダクション クラス型のアクセス指定子には public, protected, private の三種類があります。この中で protected は、クラスの外からはアクセスできず、クラスの中や派生クラスの中からはアクセスできるという便利(?)なものです。そのため、「将来派生クラスを作る時のために」などと言いながら public と protected しか使わない人もいるのではないでしょうか。それはかなり考えものです。 以降は話を単純にするために対象をデータメンバに限定しますが、メンバ関数にもほとんど同様のことが言えるでしょう。 何がいけないのか まず、「データメンバを public にしない」というのは C++ の常識(オブジェクト指向の常識ではない)としていいでしょう。いわゆるデータ隠蔽の原則というやつです。個々のデータは、外から見えないように(わざわざ意識しなくていいように