在C ++中实际使用'protected'说明符

时间:2013-04-02 22:08:19

标签: c++ protected

我知道这个说明符是如何工作的。

我对实际编程中这些东西的实际使用感兴趣。我无法想象任何受保护类成员真正需要的例子(我的意思是当我们不能用'private'替换'protected'时)。

1 个答案:

答案 0 :(得分:12)

一个类有两个API - 一个用于实例化它并使用结果对象的代码,另一个用于子类。

第一个API是public成员,第二个是publicprotected成员。有一些操作和数据可供子类访问,“普通用户”无法访问。

作为一个具体的例子,想象一下Windows GUI类库。它包装和隐藏普通的旧Windows API。 Window代表一个窗口,并且HWND是底层的Windows窗口句柄。它隐藏了HWND类用户的Window,因为它不属于他们的业务(或者如果它们可以使用它,它只通过只读访问器公开它)。但Window的子类(如FrameWindowEditControl)可以直接访问HWND

class Window
{
public:
    void Show();  // Example public API

protected:
    HWND m_hwnd;
};