IFT1166 -- Démonstration #10
Contenu
- des questions sur le TP03?
- fonctions virtuelles.
- héritage multiple.
- manipulation des fichiers.
- exceptions.
Exercice 1
Soit le programme suivant:
#include <iostream.h>
class X {
public:
X() { p = new int[2]; cout << "X(). " << X::p << " ;
";}
~X() { delete [] p; cout << "~X().\n";}
private:
int* p;
};
class Y : public X {
public:
Y() { q = new int[1023]; cout << "Y(): Y::q = " << q <<
". ";}
~Y() { delete [] q; cout << "~Y(). " ; }
private:
int* q;
};
int main() {
for (int i
= 0; i < 8; i++) {
X* r = new Y;
delete r;
}
return 0;
}
-1- expliquez son fonctionnement.
-2- corrigez l'erreur de programmation.
Exercice 2
Soit 4 classes suivantes:
X la classe de base (membres: string Id, et afficher_Id).
Y & Z héritent de la classe de base.
W hérite des deux classes Y & Z.
Écrivez les classes X, Y, Z et W de telle manière
que la fonction main suivante puisse fonctionner correctement.
int main() {
W wtest("wx");
cout << "Id\n" << wtest.Id;
wtest.print();
return 0;
}
Exercice 3
Reprendre l'exercice 2 avec la modification suivante:
X dérive d'une classe abstraite A, dont affiche_Id
est la fonction virtuelle.
Exercice 4
Écrire un programme qui permet de réaliser les 3 questions ci-dessous.
-1- ouvrir un nouveau fichier, essai.txt.
-2- y écrire le texte suivant:
nous allons rechercher le mot clé qui permet d'enclencher
un virus lors de l'ouverture de ce fichier. Ce mot clé est : tempête
. Si ce mot clé est détecté par le système,
alors dites un au revoir à vos données sur disque.
-3- recherchez le mot clé "tempête" et remplacez
le par la chaîne: "fausse alerte!"
Ouvrez par la suite emacs avec le fichier "essai.txt"
et regardez le résultat.
Exercice 5
Soit la classe Essai ayant les membres publics suivants:
classe Erreur ; constructeur & destructeur de la classe Essai ; une fonction f qui lève une exception lors de la construction d'une instance de la classe Erreur initialisée à la valeur 100.
Écrire la fonction main contenant, la structure de contrôle try … catch. dans try, il y a appel de la fonction f, et catch intercepte l'exception du type Erreur, et un objet e est passé en paramètres afin d'être utilisé pour extraire la valeur de l'erreur.
Complétez ce programme par la définition des fonctions terminate & unexpected.
Récrire une partie de votre programme pour que
la fonction unexpected soit appelée.