Je lisais sur la différence de ce qui suit:
1)
std::string test = level > 10 ? "Master" : "Beginner";
2)
std::string test;
if (level > 10)
test = "Master";
else
test = "Beginner";
Et dans le deuxième cas, on m'a dit que dans la deuxième option, une valeur temporaire est créée que je ne comprends pas.
J'ai appris que lorsque nous déclarons une variable sans initialisation, cela prend des déchets, donc le compilateur contient juste un emplacement mémoire et ne "travaille" pas pour changer sa valeur.
Il n'y a aucune raison de ne pas utiliser le premier formulaire, mais le compilateur aurait de graves problèmes de performances s'il ne produisait pas le même code pour l'un ou l'autre. Cela dit, le premier formulaire est clair et facile à comprendre, et peut donner moins de travail à l'optimiseur, vous pouvez donc l'utiliser. Il énonce clairement l'intention de initialiser la variable à l'une des deux valeurs données, et le code qui exprime le plus clairement l'intention produit souvent le meilleur code généré (en plus d'être le plus facile à comprendre).