Question sur l'examen 2 de 2018

Question sur l'examen 2 de 2018

par Octave Jean René Arevian,
Number of replies: 1

Bonjour,

Je suis face à un dilemme pour le 4) de la question 1 de l'examen final de 2018.

Pour la dernière portion de code ("Bidule b = Bidule();") , je n'arrive pas à savoir à quelle situation cela correspond:

  • une déclaration et initialisation explicite avec le constructeur sans arguments de la variable de type Bidule et de nom b
  • Une déclaration de la variable de type Bidule et de nom b et une initialisation par copie de cette variable à partir d'une variable  renvoyée par une fonction de déclaration Bidule Bidule(); Cette fonction masquerait la classe mais en ajoutant le mot "class" au début de la déclaration cela fonctionnerait.
J'ai réussi à faire compiler dans les 2 cas donc je ne sais pas quelle est la bonne réponse.

In reply to Octave Jean René Arevian

Re: Question sur l'examen 2 de 2018

par Sepand Kashani,
Il n'y a pas forcément de réponse unique.

Votre première réponse est correcte. Notez par contre que "Bidule b = Bidule();" fera exactement la même chose que "Bidule b". En effet le constructeur par défaut est appelé dans ce dernier cas automatiquement car l'objet "b" doit être crée.

Votre deuxième réponse est également correcte, bien que un peu tordu et fait preuve d'un mauvais style de programmation.

Une troisième option est de voire "Bidule b = Bidule()" comme la valeur par défaut d’un argument de fonction, cette valeur étant donnée par l’appel par défaut du constructeur Bidule().
Exemple: "void f(Vecteur v = Vecteur());"