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.