Pour développer Réponse de Sparr
L'initialisation et l'affectation sont deux opérations distinctes qui utilisent ici le même opérateur ("=").
Pensez-y comme ça :
Imaginez qu'il existe 2 fonctions, appelées InitializeObject
et AssignObject
. Lorsque le compilateur voit thing = value
il examine le contexte et appelle un InitializeObject
si vous créez une nouvelle thing
. Si vous ne l'êtes pas, il appelle plutôt AssignObject
.
Normalement, cela convient car InitializeObject
y AssignObject
se comportent généralement de la même manière. Sauf lorsqu'il s'agit de tableaux de caractères (et quelques autres cas limites), auquel cas ils se comportent différemment. Pourquoi faire cela ? Eh bien, c'est un tout autre sujet, impliquant la pile et le tas, etc.
PS : En passant, cette façon de voir les choses vous aidera à comprendre les constructeurs de copie et d'autres éléments similaires si vous vous aventurez un jour dans le C++.