以这些类为例:
class B { /*...*/ };
class D_priv : private B { /*...*/ };
class D_prot : protected B { /*...*/ };
class D_publ : public B { /*...*/ };
class UserClass { B b; /*...*/ };
子类都不能访问 B 的私有部分。在 D_priv中,B 的公有和保护部分都是私有的。在 D_prot中,B 的公有和保护部分都是保护的。在 D_publ 中,B 的公有部分是公有的,B 的保护部分是保护的(D_publ 是一种 B)。UserClass 类仅仅可以访问 B 的公有部分。
要使 B 的公有成员在 D_priv 或 D_prot中也是公有的,则使用 B:: 前缀声明成员的名称。例如,要使 B::f(int,float)成员在 D_prot中公有,应该这样写:
class D_prot : protected B {
public:
using B::f; // 注意: 不是 using B::f(int,float)
};