Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

heritage de calsses

2 réponses
Avatar
prat
bonjour,

si j'=E9cris : class B:public A ,la protection de A reste inchang=E9e au
niveau de B donc des classes d=E9riv=E9es de B.
si j'=E9cris : 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=E9riv=E9es de B.

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

merci.

2 réponses

Avatar
James Kanze
On Mar 28, 7:42 pm, "prat" wrote:

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

Avatar
Sylvain
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.