この指定子がどのように機能するかを知っています。
私は、実際のプログラミングでこのようなものを実際に使用することに興味があります。保護されたクラスメンバーが本当に必要な例は想像できません (「保護」を「プライベート」に置き換えることができない場合を意味します)。
クラスには 2 つの API があります。1 つはクラスをインスタンス化し、結果のオブジェクトを使用するコード用で、もう 1 つはサブクラス用です。
最初の API はpublic
メンバーで、2 番目の API はpublic
andprotected
メンバーです。サブクラスがアクセスしても問題なく、「一般ユーザー」がアクセスできない操作やデータがあります。
具体的な例として、Windows GUI クラス ライブラリを想像してください。プレーンな古い Windows API をラップして非表示にします。AWindow
はウィンドウを表し、HWND
基礎となる Windows ウィンドウ ハンドルである を持っています。HWND
クラスのユーザーには関係ないため、クラスのユーザーから隠されますWindow
(または、ユーザーが使用しても問題ない場合は、読み取り専用アクセサーを介してのみ公開します)。しかし、や のWindow
ようなのサブクラスがに直接アクセスしても問題ありません。FrameWindow
EditControl
HWND
class Window
{
public:
void Show(); // Example public API
protected:
HWND m_hwnd;
};