51 votes

Quelle est la valeur par défaut pour les membres de classe C ++

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?

45voto

AndreyT Points 139512

Il n'y a pas de différences entre les structures et les classes à cet égard en C++. Ils sont tous appelé tout types de classe.

Les membres de la classe de types ont pas de valeurs par défaut dans le cas général. Pour un membre de la classe pour obtenir une valeur déterministe, il doit être initialisé, ce qui peut être fait par

  • Constructeur par défaut du membre lui-même
  • Constructeur de liste d'initialiseur de la classe englobante
  • Explicitement spécifié initialiseur pour objet de la classe englobante (qui comprend la valeur de l'initialisation et de l'initialisation de l'agrégat de l'initialiseur).

En outre, tous les objets statiques durée de stockage sont initialisé à zéro lors du démarrage du programme.

Côté forme les cas ci-dessus, les membres de la classe, une fois de plus, n'ont pas de valeurs par défaut et d'abord contenir imprévisible des ordures valeurs.

15voto

Hans Passant Points 475940

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();
 

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