UdMHaut
UdMBAS

IFT1166
Programmation Orientée Objet avec C++

Département d'informatique et de recherche opérationnelle

Direction de l'enseignement de service en informatique
 

Image C++
 
Automne 2003

Accueil

Professeurs et
Démonstrateurs

Horaires et locaux

Notes de cours

Cours
après Cours

Démonstrations
et devoirs

Examens

Liens utiles

Au sujet du
livre de cours

Consultez vos notes

Foire aux questions
(FAQ)

Sessions antérieures

Longueuil
sections L&M

  Démonstration #10  
 
Dernière mise à jour : jeu 27 nov 2003 17:43:01 EST
 

Buts:

  • Héritage -2- : simple, multiple.
  • Fonctions et classes virtuelles.
  • Classes abstraites

Exercice 1

corrigé question -1- : avec bug
demo10exo1q1asol.cpp
classe X
classe Y
classe Z
classe W

corrigé question -1- : bug corrigé
demo10exo1q1bsol.cpp
classe X
classe Y
classe Z
classe W

corrigé question -2-
demo10exo1q2sol.cpp
classe A
classe X

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.
  • -1- É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;

    }

  • -2- reprendre la question -1-, avec la contrainte suivante: X dérive d'une classe abstraite A, dont affiche_Id est la fonction virtuelle.

Exercice 2
(solution: demo10exo2q1sol.cpp
demo10exo2q2sol.cpp)

Soit le programme suivant demo10exo2.cpp:

#include
using namespace std;

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.



pift1166@iro.umontreal.ca
[top]