C++中说基类protected成员只能通过派生对象访问,不能通过通过基类对象访问(当然不能是私有继承)。并在原文中给出了一个示例。
但是并不是在任何地方都可以通过派生对象访问基类的protected成员的,只能在此派生类内部才能如此进行。也就是只能在类内部的对象,或者传入到内内部的对象或者引用才能有这个访问权限。而且派生类中只能通过该类型对象访问上一级基类的protected成员,不能访问基类的基类保护成员。
其访问权限如下表所示:
公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。
1. 公有继承(public)
公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。
2. 私有继承(private)
私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。
3. 保护继承(protected)
保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。
-----------------------------------------------------------
private继承
基类成员
内部访问
对象访问
------------------------------------------------------------
public继承
基类成员
内部访问
对象访问
------------------------------------------------------------
protected继承
基类成员
内部访问
对象访问
------------------------------------------------------------