IFT1166 --- Automne 1999 --- Demo10  --- 24 Novembre 1999
 

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.