Added new C++17 if features (#31413)

Added text about if with initializer and if constexpr
This commit is contained in:
alberto
2019-08-13 21:32:47 +02:00
committed by Randell Dawson
parent c06f25fb9d
commit d05d8b77ca

View File

@ -1,7 +1,8 @@
--- ---
title: If-Else Statement title: If-Else Statement
localeTitle: Declaración If-Else localeTitle: Declaración If-Else
--- ---
## ¿Qué hace una declaración If-Else?
* La instrucción If-Else es una extensión de la instrucción simple If. * La instrucción If-Else es una extensión de la instrucción simple If.
* En la declaración simple If, si el valor de la expresión de prueba es falso, omitimos el código de bloqueo y continuamos con nuestra siguiente declaración. * En la declaración simple If, si el valor de la expresión de prueba es falso, omitimos el código de bloqueo y continuamos con nuestra siguiente declaración.
@ -185,6 +186,23 @@ Enter first number:
* El tamaño de la escalera if ... else if ... else puede variar según el problema que el programa esté tratando de resolver y la cantidad de condiciones que deben verificarse. * El tamaño de la escalera if ... else if ... else puede variar según el problema que el programa esté tratando de resolver y la cantidad de condiciones que deben verificarse.
### Adiciones a if en las nuevas versiones de C++
A partir de C++17 es posible añadir una instrucción de inicialización al if, algo parecido a un bucle for.
```
if(int status = getStatus(); status < 0) {
std::cerr << "Error " << status << '\n';
}
```
Como puedes ver permite usar variables en el if y su bloque sin tener que estar declaradas fuera de este. Es muy útil en apis que retornan códigos de error, como se ve en el ejemplo.
También en C++ 17 se añadio if constexpr, un if diseñado para ser resuelto en tiempo de compilación, por ejemplo si una clase es hija de otra.
```
if constexpr (std::is_base_of<Base, Hija>::value) {
...
}
```
**Buena suerte a todos ustedes** **Buena suerte a todos ustedes**
**¡Feliz codificación! :)** **¡Feliz codificación! :)**