クラス・メンバーのアクセスの変更

C++クラス B が、クラス A の直接基底クラスであるとします。 クラス B が、クラス A のメンバーにアクセスすることを制限するには、 アクセス指定子 protected または private のどちらかを使用して、BA から派生させてください。

クラス 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;
}

コンパイラーは、上記の例から、次の割り当てを許可しません。

コンパイラーは、上記の例から、次のステートメントを許可します。

関連参照

IBM Copyright 2003