Domanda

Ho una classe con un membro di dati bool che non è inizializzata dal costruttore. Se faccio

cout << x.myBoolDataMember;

dove x è un oggetto di questa classe, in cui non è stato inizializzato il bool, a volte ottengo un numero a caso, piuttosto che 0 o 1. (sto usando gcc.) È questo comportamento conforme alla Standard?

È stato utile?

Soluzione

  

E 'questo comportamento compatibile con lo standard?

Sì! I valori della spazzatura che utilizzano (non inizializzato) nei tuoi invoca codice comportamento non definito

Altri suggerimenti

Sì. Una variabile non inizializzata può avere qualsiasi valore.

Non appena "<<" operatore non controlla il bool, questo comportamento è corretto.
Il problema qui è nascosto nel bool sé: programma utilizza più di un bit per memorizzare il bool. Questo dipende dalla implementazione. A volte un solo bit può essere utilizzato per memorizzare il bool.
A volte di più, e si tratta di un caso del genere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top