heritage de calsses

Le
prat
bonjour,

si j'écris : class B:public A ,la protection de A reste inchangée au
niveau de B donc des classes dérivées de B.
si j'écris : class B: protected A,suels les membres public et
protected de la classe A sont accessibles par les fonctions de classe
B et des classes dérivées de B.

Ma question:quelle est la différence alors entre: class B:public A et
class B:protected A ?

merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
James Kanze
Le #305446
On Mar 28, 7:42 pm, "prat"
si j'écris : class B:public A ,la protection de A reste inchangée au
niveau de B donc des classes dérivées de B.
si j'écris : class B: protected A,suels les membres public et
protected de la classe A sont accessibles par les fonctions de classe
B et des classes dérivées de B.

Ma question:quelle est la différence alors entre: class B:public A et
class B:protected A ?


En dehors de l'hièrarchie, protected se comporte plutôt comme
private, non comme public. Donc :

class A
{
public:
void f() ;
} ;

class B : protected A
{
} ;

void
f( B* pb )
{
A* pa = pb ; // illégal...
pb-> f() ; // illégal...
}

(Dans la pratique, je n'ai jamais trouvé une utilité pour
l'héritage protected.)

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Sylvain
Le #305377
James Kanze wrote on 29/03/2007 09:02:

(Dans la pratique, je n'ai jamais trouvé une utilité pour
l'héritage protected.)


l'héritage virtuel en diamant.

Sylvain.

Publicité
Poster une réponse
Anonyme