Question

J'ai une classe avec un membre de données bool qui n'est pas initialisé par le constructeur. Si je fais

cout << x.myBoolDataMember;

x est un objet de cette classe dans laquelle le bool n'a pas été initialisé, je reçois parfois un nombre aléatoire plutôt que 0 ou 1. (j'utilise gcc.) Est-ce un comportement conforme à la Standard?

Était-ce utile?

La solution

  

Ce comportement est conforme à la norme?

Oui! L'utilisation de valeurs de déchets (non initialisée) dans votre code invoque Comportement non défini

Autres conseils

Oui. Une variable non initialisée peut avoir une valeur.

Dès que « << » opérateur ne vérifie pas le bool, ce comportement est correct.
Le problème ici est caché dans le bool lui-même: programme utilise plus d'un bit pour stocker le bool. Cela dépend de la mise en œuvre. Parfois, un seul bit peut être utilisé pour stocker le bool.
Parfois plus, et il est un tel cas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top