In an inheritance graph containing virtual base classes, a name that can be reached through more than one path is accessed through the path that gives the most access.
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();
}
};
In the above example, the function f() is accessed through class B2. Because class B2 is inherited publicly and class B1 is inherited privately, class B2 offers more access.