Built with from Grav and Hugo
Vous avez terminĂ© le Chapitre 4 ! C’est donc maintenant le moment de connecter vos neurones pour rĂ©pondre aux questions suivantes. Bon courage Ă vous đ
1- Quâest-ce quâune classe polymorphe ?
2- DĂ©finissez une classe polymorphe Nothing qui ne fait rien.
Nothing
3- Comment représenter une classe abstraite en C++ ?
Les questions 4 à 6 font référence au code suivant :
class A { public: virtual int fcn1(int p1, int p2) const { return p1 * p2; } virtual void fcn2(const char* str) = 0; virtual void fcn3(bool) {} const char* fcn4() { return "artichaut"; } }; class B : A { public: int fcn1(int p1, int p2) { return p1 + p2; } void fcn2(const char*) override {} void fcn3(bool b) { if (b) { A::fcn3(b); } } const char* fcn4() { return "sopalin"; } }; int main() { A* a = new B(); a->fcn1(1, 3); a->fcn2("la la la"); a->fcn3(false); a->fcn4(); return 0; }
4- Le programme ci-dessus ne compile pas. Pourquoi et que faut-il faire pour le corriger ?
5- En plus du problĂšme de compilation, on peut relever trois erreurs de programmation qui pourraient gĂ©nĂ©rer des problĂšmes Ă lâexĂ©cution. Quelles sont-elles et que faut-il faire pour les corriger ?
6- Pour chacun des appels sur a, indiquez quelle fonction sera appelĂ©e (A::fcnX ou B::fcnX) et justifiez. Vous considĂ©rerez que vous nâavez pas effectuĂ© les corrections de la question prĂ©cĂ©dente.
a
A::fcnX
B::fcnX
Pour les questions 7 et 8, vous pouvez partir de lĂ pour tester votre code.
7- Définissez une classe SharedStuff contenant un attribut _value accessible uniquement depuis ses classes dérivées. Ajoutez un constructeur à 1 paramÚtre pour initialiser ce membre.
SharedStuff
_value
8- DĂ©finissez une classe MoreStuff hĂ©ritant de SharedStuff et contenant un attribut _value2. DĂ©finissez les fonctions nĂ©cessaires permettant dâinstancier un objet de ce type, et dâafficher les valeurs de ses deux membres dans la console.
MoreStuff
_value2
Pour les questions 9 et 10, vous pouvez partir de lĂ pour tester votre code.
9- DĂ©finissez une classe Food contenant une fonction virtuelle pure miam_miam. Cette fonction doit servir Ă afficher le nom de lâaliment dans la console.
Food
miam_miam
10- DĂ©finissez une classe Nutella hĂ©ritant de Food. Ajoutez ce quâil faut pour rendre cette classe instanciable.
Nutella