96 votes

Initialisation des champs dans le constructeur - liste d'initialisation vs corps du constructeur

Je travaille en c++ depuis un certain temps maintenant, mais je ne suis pas sûr de la différence entre

public : Thing(int _foo, int _bar): member1(_foo), member2(_bar){}

y

public : Thing(int _foo, int _bar){
    member1 = _foo;
    member2 = _bar;
}

J'ai l'impression qu'elles font la même chose, mais y a-t-il une différence pratique entre ces 2 syntaxes. L'une d'entre elles est-elle plus sûre que l'autre, et gèrent-elles différemment les paramètres par défaut ?

Je ne suis pas totalement habitué au premier exemple, donc si j'ai fait une erreur à ce sujet, je m'en excuse.

1voto

DumbCoder Points 4097

La première est l'initialisation, en utilisant une liste d'initialisation et la seconde est la construction par défaut et ensuite l'affectation. La première est au moins aussi rapide que la seconde et est préférable à cette dernière.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X