3 votes

Utilisation pratique du spécificateur "protected" en C++.

Je sais comment ce spécificateur fonctionne.

Je suis intéressé par l'utilisation pratique de ce matériel dans la programmation réelle. Je n'arrive pas à imaginer un exemple où les membres protégés d'une classe sont vraiment nécessaires (je veux dire quand on ne peut pas remplacer "protected" par "private").

12voto

RichieHindle Points 98544

Une classe possède deux API : une pour le code qui l'instancie et utilise les objets résultants, et une pour les sous-classes.

La première API est l public tandis que le second est le public et protected membres. Il existe des opérations et des données auxquelles une sous-classe peut accéder, mais auxquelles les "utilisateurs ordinaires" ne peuvent pas accéder.

À titre d'exemple concret, imaginez une bibliothèque de classes d'interface graphique Windows. Elle enveloppe et cache la bonne vieille API Windows. A Window représente une fenêtre, et a un HWND qui est la poignée de fenêtre Windows sous-jacente. Il cache le HWND de la part des utilisateurs de la Window parce que cela ne les regarde pas (ou si elles peuvent l'utiliser, elle ne l'expose que par un accesseur en lecture seule). Mais c'est OK pour les sous-classes de Window comme FrameWindow o EditControl pour accéder à la HWND directement :

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

protected:
    HWND m_hwnd;
};

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X