I tipi di Bool sono più piccoli dei tipi di Int, quindi usano meno spazio nella memoria. A seconda del sistema su cui si sta compilando / per, un Int può essere di 4 - 8 byte, mentre un Bool è di 1 byte (come si può vedere in questo articolo MSDN )
Accoppia questo con alcuni aspetti di KISS e un buon programma di progettazione, e diventa chiaro perché è meglio usare un bool per memorizzare una variabile che avrà sempre solo 2 valori.
Perché complicare le cose con un oggetto in grado di memorizzare un ampio intervallo di valori, quando sei sicuro di aver solo bisogno di memorizzare 1 o 2 valori diversi?
Cosa succede nel sistema che usa un int, se ne memorizzi 75? Se hai aggiunto condizionali extra
if (value >= 0 )
return true; //value is greater than 0, thus is true
else
return false; //value is 0 or smaller than 0, thus is false
o
if (value == 0)
return false; //value is greater than 0, thus is true
else if (value == 1)
return true; //value is 0 or smaller than 0, thus is false
allora sei coperto per questa situazione. Ma se non lo fai, allora non lo sei.
Potresti anche avere un caso (a seconda di come stai modificando il valore di int) in cui hai un sovraccarico del buffer, e il valore "resetta" torna a 0 o il limite inferiore del tuo int (che potrebbe essere da qualche parte nella regione da -127 a -9,223,372,036,854,775,808, a seconda dell'architettura di destinazione ) cosa succede nel tuo codice allora?
Tuttavia, se hai usato un bool puoi usare qualcosa di simile:
if(continueBool == true)
return true;
else
return false;
O anche:
return (continueBool== true) ? true : false;
o anche:
return continueBool;
A seconda del compilatore, potrebbero esserci ottimizzazioni che possono essere eseguite sul codice che utilizza Bool per memorizzare valori true / false mappati. Considerando che potrebbero non esserci ottimizzazioni che possono essere eseguite per Ints utilizzati per memorizzare valori true / false mappati.
Dobbiamo anche ricordare che C ++ (insieme a C, Assembly e FORTRAN) è usato per scrivere codice altamente efficiente, piccolo e veloce. Quindi, sarebbe meglio usare un Bool in questa istanza, specialmente se ti stai marcando sull'uso di variabili, memoria, cache o tempo del processore.
Una domanda simile potrebbe essere: perché dovrei memorizzare un intero (valore) in un float?
Risposta: non dovresti, perché non ha senso.
Per farla breve: come insegnante / tutor / docente / docente di andare oltre le dimensioni di diversi tipi di valore con te (nel caso ti sia sfuggito) e perché sono importanti nello sviluppo di software.
Spero che questo aiuti come punto di partenza (spero anche che non si presenti come pedante)