Exercice 1 (solution: demo09exo1sol.cpp)
Soit la classe générique (Template) suivante:
template<class Type1, class Type2>
class ClasseBase {
protected:
Type1 Champ1;
Type2 Champ2;
public:
ClasseBase() {}
ClasseBase(Type1 arg1, Type2 arg2):Champ1(arg1), Champ2(arg2) {}
void Print() {
cout << Champ1 << ' ' << Champ2 << endl;
}
};
Citez au moins un type qu'il ne pourra pas être traité correctement par la classe ClasseBase (justifiez votre réponse).
Exercice 2 (solution: demo09exo2sol.h --- demo09exo2sol.cpp)
Reprendre l'exercice précédent, et répondez aux questions suivantes:
- -1- Écrire la définition d'une classe dérivée ClasseDerivee, qui dérive publiquement de la classe de base ClasseBase et qui contient les membres suivants:
- - un membre donnée Champ3 du type Type2
- - un seul constructeur
- - une fonction Print() pour afficher les membres données de la classe de base et de la classe dérivée.
- -2- Complétez la fonction main suivante:
int main() {
int x = 40;
float y = 55.55;
char a = 'w', b='z';
// À titre d'exemple
// création (instantiation) de l'objet BaseExpObj du type
// ClasseBase et cela sans arguments.
ClasseBase BaseExpObj();
// À ÉCRIRE
// création (instantiation) de l'objet ObjBase
// du type ClasseBase avec les valeurs x et y
// comme arguments.
// À ÉCRIRE
// création (instantiation) de l'objet ObjDerivee
// du type ClasseDerivee, avec les valeurs a,b
// comme arguments.
// À ÉCRIRE
// appel de la fonction Print de la classe de base
// sur l'objet ObjBase.
// À ÉCRIRE
// appel de la fonction Print de la classe dérivée
// sur l'objet ObjDerivee
return 0;
}