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