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