Antes de que bool se convirtiese en parte del C++ Estándar, todos tendían a utilizar diferentes técnicas para producir comportamientos similares a los booleanos. Éstas producían problemas de portabilidad y podían introducir errores sutiles.
El tipo bool de C++ Estándar puede tener dos estados expresados por las constantes predefinidas true (que se convierte en el entero 1) y false (que se convierte en el entero 0). Estos tres nombres son palabras reservadas. Además, algunos elementos del lenguaje han sido adaptados:
| Elemento | Uso con booleanos |
|---|---|
| && || ! |
Toman argumentos booleanos y producen valores
bool
|
| < > <= >= == != |
Producen resultados bool
|
if, for, while, do
|
Las expresiones condicionales se convierten en
valores bool
|
| ?: |
El primer operando se convierte a un valor
bool
|
Tabla 3.1. Expresiones que utilizan booleanos
Como hay mucho código existente que utiliza un int para representar una bandera, el compilador lo convertirá implícitamente de int a bool (los valores diferentes de cero producirán true, mientras que los valores cero, producirán false). Idealmente, el compilador le dará un aviso como una sugerencia para corregir la situación.
Un modismo que se considera «estilo de programación pobre» es el uso de ++ para asignar a una bandera el valor true. Esto aún se permite, pero está obsoleto, lo que implica que en el futuro será ilegal. El problema es que se está haciendo una conversión implícita de un bool a un int, incrementando el valor (quizá más allá del rango de valores booleanos cero y uno), y luego implícitamente convirtiéndolo otra vez a bool.
Los punteros (que se describen más adelante en este capítulo) también se convierten automáticamente a bool cuando es necesario.