Questionnaire Vous êtes : Votre adresse mail : Votre groupe de TP: Initiaux GR1 (avec Anthony Labarre) Initiaux GR2 (avec Victor Marsault) Apprentis GR3 (avec Henri Derycke) 1. Quel est le terme C++ permettant de désigner les “méthodes” d’une classe ? 2. Citez une règle permettant de respecter le principe d’encapsulation en C++. 3. Quel nom donne-t-on au constructeur d’une classe acceptant 0 paramètre ? 4. Dans un constructeur, comment s’appelle la zone dans laquelle on initialise les attributs de la classe ? 5. A quoi fait-on référence lorsque l’on parle d’implémentation par défaut ? 6. Supposons une fonction-membre bool hello() const définie dans une classe Greetings. Que faut-il écrire pour l’implémenter dans un .cpp séparé ? 7. Soit un attribut déclaré par static float _attr dans une classe UneClasse. Comment faut-il faire pour le définir ? 8. La ligne static int Toto::fcn_static() { return 1; } placée dans un fichier Toto.cpp ne compile pas. Pourtant, fcn_static a été déclarée comme il faut dans la classe Toto et l’include a été fait. Quel est le problème ? 9. Donnez la signature de l’opérateur << que l’on doit définir pour afficher notre classe Cat grâce à un flux de sortie. 10. Quelle instruction permet de définir un alias SmallerName sur le type suivant : std::unique_ptr<std::array<std::string, 3>> Les deux prochaines questions font référence à cette classe : class Toto { public: Toto() : Toto(3), _value2(5) {} Toto(int v1) : _value1(v1) {} private: int _value1; int _value2; } 11. Ce code ne compile pas pour deux raisons. Quelles sont-elles ? 12. Identifiez un autre problème lié au constructeur à 1 paramètre. Il ne s’agit pas d’un problème de compilation. On considère une classe Dog dont le header est donné ci-dessous. On suppose toutes les fonctions implémentées dans un cpp non-donné. class Dog { public: Dog(); Dog(int v1, int v2); void set(int v); int get() const; static void call(const Dog& d); private: void move(); static void speak(); int _age = 0; }; Est-ce que chacune des main ci-dessous compile et pourquoi? 13. int main(){ Dog d { -1, 3 }; } 14. int main(){ const Dog d; d.set(8); } 15. int main(){ const Dog d; auto v = d.get(); } 16. int main(){ auto a = Dog::get(); } 17. int main(){ Dog d; d.call(d); } 18. int main(){ Dog d; d.move(); } 19. int main(){ Dog::speak(); } 20. int main(){ const Dog d; int age = d._age; } Combien de temps avez-vous mis à compléter ce chapitre ? Avez-vous des questions suite à sa lecture ? Avez-vous des commentaires concernant le chapitre et/ou le site ?