Next: Les apports syntaxiques Up: La surcharge des Previous: La surcharge des

Surcharge et bibliothèque iostream

La bibliothèque iostream permet d'afficher les types de bases (int, char *, float,...). Grâce au mécanisme de surcharge, il est possible d'étendre cette bibliothèque à des types définis par le programmeur. Soit le type X, la surcharge de l'opérateur d'écriture est de la forme : ostream &operator << (ostream &, const X &)

la surchage de l'opérateur de lecture est de la forme : istream &operator >> (istream &, X &)

Les surcharges doivent renvoyer une référence sur une variable de type istream ou ostream pour permettre un encha^nement d'opérations de lecture ou écriture. Il faut donc renvoyer une référence sur le premier paramètre afin que ce dernier devienne le paramètre de l'opération suivante :


int i=5,j=4 ;
cout << i << j ;
cette opération n'est possible que si le résultat de cout << i est de type ostream &, en l'occurence une référence sur cout.

class complexe {
  double re,im ;
public:
  ...
  friend ostream & operator << (ostream &  os, const complexe &c) ;
  friend istream & operator >> (istream & is, complexe & c) ;
} ;
ostream operator << (ostream & os, const complexe &c) ;
cout << "( ", << c.re << " , " << c.im << " ) " ;
return os ;
}
istream operator >> (istream & is , complexe & c) {
  cin >> c.re ; // version simplifiee
  cin >> c.im ; // sans gestion d'erreur
  return is ;
}
int main(void) {
  complexe c1(3.0,1.0) ;
  int i ;
  cout << c1 << i ;
  ...

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