我知道这个说明符是如何工作的。
我对这些东西在实际编程中的实际使用很感兴趣。我无法想象任何真正需要受保护的类成员的例子(我的意思是当我们不能用“私有”替换“受保护”时)。
一个类有两个 API——一个用于实例化它并使用结果对象的代码,一个用于子类。
第一个 API 是public
成员,而第二个是public
和protected
成员。有些操作和数据是子类可以访问的,而“普通用户”则不能访问。
作为一个具体的例子,想象一个 Windows GUI 类库。它包装并隐藏了普通的旧 Windows API。AWindow
代表一个窗口,并且有一个HWND
which 是底层的 Windows 窗口句柄。HWND
它对类的用户隐藏Window
,因为这不关他们的事(或者如果他们可以使用它,它只通过只读访问器公开它)。但是Window
,像FrameWindow
or 的子类可以直接EditControl
访问HWND
:
class Window
{
public:
void Show(); // Example public API
protected:
HWND m_hwnd;
};