Exercice 66
Énoncé
Soit la classe point créée dans l’exercice 62, dont la déclaration était la suivante :
class point
{ float x, y ;
public :
point (float, float) ;
void deplace (float, float) ;
void affiche () ;
}
Adapter cette classe, de manière que la fonction membre affiche fournisse, en plus
des coordonnées du point, le nombre d’objets de type point.
Il faut donc définir un compteur du nombre d’objets existant à un moment donné. Ce
compteur doit être incrémenté à chaque création d’un nouvel objet, donc par le
constructeur point. De même, il doit être décrémenté à chaque destruction d’un objet,
donc par le destructeur de la classe point ; il faudra donc ajouter ici une fonction
membre nommée ~point.
Quant au compteur proprement dit, nous pourrions certes en faire une variable globale,
définie par exemple en même temps que la classe ; cette démarche présente toutefois
des risques d’effets de bord (modification accidentelle de la valeur de cette variable,
depuis n’importe quel programme utilisateur). Il est plus judicieux d’en faire un
membre privé statique.
Voici la nouvelle déclaration de notre classe point :
/* fichier POINT5.H */
/* déclaration de la classe point */
class point
{
static nb_pts ; // compteur du nombre d'objets créés
float x, y ; // coordonnées (cartésiennes) du point
public :
point (float, float) ; // constructeur
~point () ; // destructeur
void deplace (float, float) ; // déplacement
void affiche () ; // affichage
} ;
Et voici sa nouvelle définition (notez l’initialisation du membre statique) :
#include "point5.h"
#include
142
Précédent

- 143/398

Suivant