ベースクラスと、派生クラスに同じ名前のメンバがあると、 クラス内では、 区別がつかなくなるので、class名::をつけて区別してあげないとコンパイルエラーになります。 クラス外(インスタンスから)では 内側(ベースクラス)の名前が、派生クラスによって覆い隠されているので、派生クラスのメンバしか見えません。 これを、メンバの隠ぺいと言います。(関数も変数も隠ぺいはあるよ)