原文地址:http://www.jizhuomi.com/software/98.html
鸡啄米在编程入门系列上一节中讲了公有继承方式的访问属性,这一节接着讲剩下的两种继承方式:保护继承和私有继承。
一.保护继承
在保护继承方式中,基类的公有成员和保护成员被派生类继承后变成派生类的保护成员,而基类的私有成员在派生类中不能访问。因为基类的公有成员和保护成员在派生类中都成了保护成员,所以派生类的新增成员可以直接访问基类的公有成员和保护成员,而派生类的对象不能访问它们,上一讲鸡啄米说过,类的对象也是处于类外的,不能访问类的保护成员。对基类的私有成员,派生类的新增成员函数和派生类对象都不能访问。
通过上述保护继承的讲解,相信大家对类的保护成员的访问属性有 更加深刻的理解了。假设A类是基类,B类是从A类继承的派生类,A类中有保护成员,则对派生类B来说,A类中的保护成员和公有成员的访问权限是一样的。而 对A类的对象的使用者来说,A类中的保护成员和私有成员都一样不能访问。可见类中的保护成员可以被派生类访问,但是不能被类的外部对象(包括该类的对象、 一般函数、其他类等)访问。我们可以利用保护成员的这个特性,在软件开发中充分考虑数据隐藏和共享的结合,很好的实现代码的复用性和扩展性。
鸡啄米举个简单的例子讨论下保护成员的访问属性。
class Base { protected: int x; // 基类的保护成员 }; int main() { Base base; base.x = 0; // 编译报错 return 0