Exercice 119
Énoncé
Soit la classe point suivante :
class point
{ int x, y ;
public :
// fonctions membre
} ;
Surdéfinir les opérateurs << et >> de manière qu’il soit possible de lire un point sur un
flot d’entrée ou d’écrire un point sur un flot de sortie. On prévoira qu’un tel point
soit représenté sous la forme :
avec éventuellement des séparateurs « espaces_blancs » supplémentaires, de part et
d’autre des nombres entiers.
Nous devons donc surdéfinir les opérateurs << et >> pour qu’ils puissent recevoir, en
deuxième opérande, un argument de type point. Il ne pourra s’agir que de fonctions
amies, dont les prototypes se présenteront ainsi :
ostream & operator << (ostream &, point) ;
istream & operator >> (istream &, point) ;
L’écriture de operator << ne présente pas de difficultés particulières : on se contente
d’écrire, sur le flot concerné, les coordonnées du point, accompagnées des symboles <
et >.
En revanche, l’écriture de operator >> nécessite un peu plus d’attention. En effet, il faut
s’assurer que l’information se présente bien sous la forme requise et, si ce n’est pas le
cas, prévoir de donner au flot concerné l’état bad, afin que l’utilisateur puisse savoir
que l’opération s’est mal déroulée (en testant « naturellement » l’état du flot).
Voici ce que pourrait être la déclaration de notre classe (nous l’avons simplement
munie d’un constructeur) et la définition des deux fonctions amies voulues :
#include
using namespace std ;
class point
{
int x, y ;
294
Énoncé
Soit la classe point suivante :
class point
{ int x, y ;
public :
// fonctions membre
} ;
Surdéfinir les opérateurs << et >> de manière qu’il soit possible de lire un point sur un
flot d’entrée ou d’écrire un point sur un flot de sortie. On prévoira qu’un tel point
soit représenté sous la forme :
avec éventuellement des séparateurs « espaces_blancs » supplémentaires, de part et
d’autre des nombres entiers.
Nous devons donc surdéfinir les opérateurs << et >> pour qu’ils puissent recevoir, en
deuxième opérande, un argument de type point. Il ne pourra s’agir que de fonctions
amies, dont les prototypes se présenteront ainsi :
ostream & operator << (ostream &, point) ;
istream & operator >> (istream &, point) ;
L’écriture de operator << ne présente pas de difficultés particulières : on se contente
d’écrire, sur le flot concerné, les coordonnées du point, accompagnées des symboles <
et >.
En revanche, l’écriture de operator >> nécessite un peu plus d’attention. En effet, il faut
s’assurer que l’information se présente bien sous la forme requise et, si ce n’est pas le
cas, prévoir de donner au flot concerné l’état bad, afin que l’utilisateur puisse savoir
que l’opération s’est mal déroulée (en testant « naturellement » l’état du flot).
Voici ce que pourrait être la déclaration de notre classe (nous l’avons simplement
munie d’un constructeur) et la définition des deux fonctions amies voulues :
#include
using namespace std ;
class point
{
int x, y ;
294
