保护继承是私有继承的变体(使用关键字protected):
class student: protected std::string,protected std::valarray<double>
{...};
使用保护继承时,基类的公有成员和保护成员都将成为派生类的保护成员。基类的接口在派生类中也是可用的,但在继承层次结构之外是不可用的。
当从派生类派生出另一个类时,使用私有继承时,第三代类将不能使用基类的接口,这是因为基类的公有方法在派生类中将变成私有方法;使用保护继承时,基类的公有方法在第二代中将变成受保护的,因此第三代派生类可以使用它们。
下图总结了公有、私有和保护继承。隐式向上转换(implicit upcasting)意味着无需进行显示类型转换,就可以将基类指针或引用指向派生类对象。