Quelles sont les valeurs par défaut pour les membres d’une structure et les membres d’une classe dans c ++, et en quoi ces règles diffèrent-elles (par exemple, entre classes / structs / primitives / etc)? Y a-t-il des circonstances où les règles concernant les valeurs par défaut diffèrent?
Il n’y a pas de différences entre les structures et les classes à cet égard en C ++. Ils sont tous appelés simplement des types de classe .
Les membres des types de classe n’ont aucune valeur par défaut dans le cas général. Pour qu’un membre de la classe obtienne une valeur déterministe, il doit être initialisé , ce qui peut être fait par
En outre, tous les objects avec une durée de stockage statique sont initialisés à zéro au démarrage du programme.
Mis à part les cas ci-dessus, les membres de la classe, encore une fois, n’ont aucune valeur par défaut et contiendront initialement des valeurs de mémoire imprévisibles.
Oui, il y en a un. Si vous initialisez un object avec le constructeur par défaut et utilisez des parenthèses, les membres POD seront initialisés à zéro:
someClass * p = new someClass();