14 votes

Différence entre default-initialize et value-initialize ?

Duplicata possible :
Que signifient les expressions suivantes en C++ : initialisation zéro, initialisation par défaut et initialisation par valeur ?

Je lisais cette réponse J'ai donc trouvé le deuxième mot : value-initialize . Au départ, je pensais qu'il s'agissait de la même chose que default-initialize mais le contexte m'indique que je me trompe.

Ma question est donc la suivante :

Quelle est la différence entre initialisation par défaut y initialisation de la valeur ?

J'aimerais comprendre la différence à l'aide de quelques exemples.

10voto

Karl von Moor Points 4550

Selon la norme (8.5/4,5) :

Pour initialisation par défaut a type T :
- le constructeur par défaut de T est appelé (et l'initialisation est mal formée si T n'a pas de constructeur accessible) ;
- un type de tableau, chaque élément est initialisé par défaut ;
- est initialisé à zéro.

Pour initialisation de la valeur a type T :
- (clause 9) avec un constructeur déclaré par l'utilisateur déclaré par l'utilisateur (12.1), alors le constructeur par défaut de de T est appelé (et l'initialisation est mal formée si T n'a pas de constructeur par défaut accessible). pas de constructeur par défaut accessible) ;
- si T est un type de classe non syndiqué sans un constructeur déclaré par l'utilisateur, alors chaque membre de données non statique et composant de classe de base de T est initialisé par une valeur ; 96)
- un type de tableau, chaque élément est initialisé par une valeur ;
- est initialisé à zéro

9voto

Ben Stott Points 1595

"default-initialise" lui donne la valeur par défaut telle que spécifiée par la norme, qui pourrait être un déchet .

"value-initialise" l'initialise à une valeur spécifique - une valeur définie dans le constructeur, par exemple, ou optimisée par le compilateur.

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