14.8 protected
我们已经学习了继承,而关键字protected对于继承有特殊的意义。在理想情况下,private成员总是严格私有的,但在实际项目中,有时希望某些东西隐藏起来,但仍允许其派生类的成员访问。于是关键字protected派上了用场。它的意思是:“就这个类的用户而言,它是private的,但它可被从这个类继承来的任何类使用”。
最好让数据成员是private,因为我们应该保留改变内部实现的权利。然后才能通过protected成员函数控制对该类的继承者的访问。
在本书的后面以及第2卷中,可以看到需要protected的例子。
14.8.1 protected继承
当继承时,基类默认为private,这意味着所有public成员函数对于新类的用户是private的。通常我们都会按public进行继承,从而使得基类的接口也是派生类的接口。然而在继承期间,也可以使用protected关键字。
保护继承的派生类意味着对其他类来说是“照此实现”,但它是对于派生类和友元是“is-a”。它是不常用的,它的存在只是为了语言的完备性。