マルチアクセス

C++仮想基底クラスを含む継承グラフでは、複数のパスを経由して到達できる名前は、 最大広範囲のアクセスを提供するパスを介してアクセスされます。

次に例を示します。

class L {
public:
  void f();
};
 
class B1 : private virtual L { };
 
class B2 : public virtual L { };
 
class D : public B1, public B2 {
public:
  void f() {
    // L::f() is accessed through B2
    // and is public
    L::f();
  }
};
 

上記の例では、関数 f() はクラス B2 を介して アクセスされます。クラス B2 は公的に継承され、クラス B1 は 私的に継承されているので、クラス B2 の方がより多く のアクセスを提供します。

関連参照

IBM Copyright 2003