クラス B が、クラス A の直接基底クラスであるとします。
クラス B が、クラス A のメンバーにアクセスすることを制限するには、
アクセス指定子 protected または private
のどちらかを使用して、B を A から派生させてください。
クラス B から継承された、クラス A のメンバー x のアクセスを増やすには、using 宣言を使用してください。 using 宣言を指定して x へのアクセスを制限することはできません。 次のメンバーのアクセスを増やすことができます。
次の例は、このことを示しています。
struct A { protected: int y; public: int z; }; struct B : private A { }; struct C : private A { public: using A::y; using A::z; }; struct D : private A { protected: using A::y; using A::z; }; struct E : D { void f() { y = 1; z = 2; } }; struct F : A { public: using A::y; private: using A::z; }; int main() { B obj_B; // obj_B.y = 3; // obj_B.z = 4; C obj_C; obj_C.y = 5; obj_C.z = 6; D obj_D; // obj_D.y = 7; // obj_D.z = 8; F obj_F; obj_F.y = 9; obj_F.z = 10; }
コンパイラーは、上記の例から、次の割り当てを許可しません。
コンパイラーは、上記の例から、次のステートメントを許可します。
関連参照