Next: Pointeurs et polymorphisme Up: Autres types d'héritage Previous: Héritage et fonctions

Ordre de recherche


class x {
public:
 void affiche(void) const ;
} ;
inline void x::affiche(void) const
{ cout << "classe x " << endl ; }
class y : public x {
public:
  void affiche(void) const ;
} ;
inline void y::affiche(void) const
{ cout << "classe y " << endl ; }
int main(void) {
  x xvar ;
  y yvar ;
  xvar.affiche() ;
  yvar.affiche() ;
  return 0 ;
}
Une classe peut parfaitement redéfinir un membre de la sur-classe. Dans ce cas, il existe en réalité deux versions de membres, l'ordre de recherche est donc impoertant et est toujours le suivant dans une hiérarchie d'héritage :
  1. recherche parmi les membres de la classe de la variable.
  2. recherche parmi les sur-classes de la classe de la variable.
Pour accéder à un membre redéfini, il suffit de préciser le type de la classe suivi de '::' avant de nommer le membre comme dans l'exemple :

  yvar.x::affiche() ; // affiche classe x

@
vendredi, 7 novembre 1997, 14:51:48 MET