Examen 2018 question 1 et 4

Examen 2018 question 1 et 4

by Lucas Antoine Reymond -
Number of replies: 1

Bonjour,

J’ai quelques questions sur l’examen de 2018.

Dans la question 1.1, le code compile sur mon ordi mais je ne peux pas construire le fichier courant. Je pense que c’est parce que on utilise une Personne dans la définition de dit_bonjour qui est dans la définition de Personne. Pourquoi est ce que le problème se passe uniquement au moment de construire le fichier courant ? Faut il répondre que le code ne compile pas vu qu’il ne fait pas ce qu’on veut ?

Dans la question 1.6, pourquoi est ce que l’objet de la classe de B ne permet pas d’afficher “B detruit” lorsqu’il est détruit tout seul à la fin du main ?

Dans la question 4 est ce que le fait qu’on définissent des attributs x et y dans les classes A et C sans y accéder dans le programme compte comme une erreur ? Faut il compter le fait qu’il n’y a pas virtual et override dans certaines méthodes comme une erreur (puisqu’il est conseillé de les mettre) ? Et dernière question : est ce que le constructeur de A (ligne 6) compte comme une erreur (car on pourrait l’améliorer en   A(int X_) : x(X_) {}    ) ?

Merci pour votre aide.


In reply to Lucas Antoine Reymond

Re: Examen 2018 question 1 et 4

by Fares Ahmed -

Bonjour,

  • Pour la question 1.1, si vous avez simplement pris le bout de code c'est normal que vous ne pouvez pas le construire puisqu'il n'y pas pas de main. Dans cet exercice, on vous demande bien si le code compile et non s'il se construit.
  • Pour la question 1.6, le destructeur de A n'est pas virtuel et donc pas de polymorphisme lors de la destruction de l'objet: seul la partie "A" de la variable a est effectivement détruite.
  • Pour la question 4: 
  1. Des attributs de classes non utilisés ne constitue pas une erreur (pourquoi ça en serait une?)
  2. L'oubli des override n'est pas une erreur non plus: c'est bien de les mettre, mais c'est pas nécessaire pour que la redéfinition de méthodes fonctionne. Pour le virtual, si vous entendez par là de remettre le virtual dans chacune des redéfinitions pareil: le virtual est optionnel pour les redéfinitions de méthodes. Si vous entendez plutôt l'oubli dans la superclasse (A dans cet exemple), c'est dur à dire et ça dépendrait de l'exercice donc je ne saurai vous dire.
  3. Non c'est pas une erreur non plus: il n'y a pas d’ambiguïté dans la liste d'initialisation du constructeur au niveau des attributs de classe/paramètres du constructeur.