In multiple-inheritance lattices involving virtual base classes, a given name can be reached through more than one path. Because different access control can be applied along these different paths, the compiler chooses the path that gives the most access. See Figure 10.3.
Figure 10.3 Access Along Paths of an Inheritance Graph
In Figure 10.3, a name declared in class VBase
is always reached through class RightPath
. The right path is more accessible because RightPath
declares VBase
as a public base class, whereas LeftPath
declares VBase
as private.