Quelles sont les valeurs par défaut pour les membres d'une structure et les membres d'une classe en c ++, et comment ces règles diffèrent-elles (par exemple, entre les classes/structures/primitives/etc)? Y a-t-il des circonstances où les règles concernant les valeurs par défaut diffèrent?
Il n'y a aucune différence entre les structures et les classes à cet égard en C++. Ils sont tous appelés juste types de classes.
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, elle doit être initialisée, ce qui peut être fait par
De plus, tous les objets 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 pas de valeurs par défaut et contiendront initialement des valeurs de déchets imprévisibles.
Ouais, il y en a un. Si vous initialisez un objet avec le constructeur par défaut et utilisez des parenthèses, les membres du POD seront initialisés à zéro:
someClass * p = new someClass();