Aller au contenu

Utilisateur:Mohamedsanoussi

Un livre de Wikilivres.

Exercice

:

Considérons la définition suivante de la classe myClass :

class myClass {

private:

int x;

static int count;

public:

void setX(int a);

//Fonction pour définir la valeur de x.

//Postcondition: x = a;

void printX();

//Fonction pour afficher x.

static void printCount();

//Fonction pour afficher count.

static void incrementCount();

//Fonction pour incrémenter count.

//Postcondition: count++;

myClass(int a = 0);

//constructeur avec des paramètres par défaut

//Postcondition x = a;

//Si aucune valeur n’est spécifié pour a, x = 0;

};

a. Écrire une instruction C ++ qui initialise la variable membre count à 0.

b. Ecrire une instruction C ++ qui augmente la valeur de count par 1.

c. Ecrire une instruction C ++ qui affiche la valeur de count.

d. Ecrire les définitions des fonctions de la classe myClass comme décrit dans sa déclaration.

e. Écrire une instruction C ++ qui déclare myObject1 à être un objet de myClass et initialise

sa variable membre x à 5.

f. Écrire une instruction C ++ qui déclare myObject2 à être un objet de myClass et initialise

sa variable membre x à 7.

g. Lesquelles des instructions suivantes sont valables ? (Supposons que myObject1 et

myObject2 sont tels que déclarés dans les parties e) et f).

myObject1.printCount (); //Ligne 1

myObject1.printX (); //Ligne 2

myClass.printCount (); // Ligne 3

myClass.printX (); // Ligne 4

myClass :: count ++; // Ligne 5

h. Supposons que myObject1 et myObject2 sont tels que déclarés dans les parties e) et f).

Quelle est la sortie du code C ++ suivant ?

myObject1.printX ();

cout << endl;

myObject1.incrementCount ();

myClass :: incrementCount ();

myObject1.printCount ();

cout << endl;

myObject2.printCount ();

cout << endl;

myObject2.printX ();

cout << endl;

myObject1.setX (14);

myObject1.incrementCount ();

myObject1.printX ();

cout << endl;

myObject1.printCount ();

cout << endl;

myObject2.printCount ();cout << endl;