Declaración e inicialización de constantes
Las constantes representan valores que no deben modificarse durante la ejecución de un programa. El uso correcto de constantes mejora la legibilidad, seguridad y mantenimiento del código, además de permitir al compilador realizar optimizaciones adicionales.
C++ moderno proporciona diversas formas para declarar y trabajar con constantes, que se describen a continuación:
Constantes con const
La palabra clave const indica que el valor de una variable no puede modificarse después de su inicialización. Ejemplo:
const int edad {25};
const double pi {3.14159};
const char inicial {'A'};
const bool esValido {true};
- Las variables declaradas como
constdeben ser inicializadas en el momento de su declaración. - Intentar modificar su valor generará un error de compilación.
Ejemplo completo:
#include <iostream>
using namespace std;
int main() {
// ----- Declaración de constantes -----
const int edad {25}; // Entero constante
const double pi {3.14159}; // Número real constante
const char inicial {'A'}; // Carácter constante
const bool esValido {true}; // Booleano constante
// Mostramos los valores
cout << "Edad: " << edad << endl;
cout << "Pi: " << pi << endl;
cout << "Inicial: " << inicial << endl;
cout << "Es válido: " << esValido << endl;
// Intentar modificar una constante provoca error de compilación
// edad = 30; // Esto NO está permitido
return 0;
}
Constantes con constexpr
La palabra clave constexpr indica que el valor de la variable es una constante en tiempo de compilación. Es una extensión más estricta y potente que const. Ejemplos:
Veamos un ejemplo:
constexpr int tamaño {10};
constexpr double radio {2.5};
constexpr char letra {'B'};
- El valor debe poder evaluarse en tiempo de compilación.
- Es preferible a
constcuando se necesita que la constante sea conocida en tiempo de compilación, por ejemplo, para tamaños de arrays o plantillas.
Ejemplo completo:
#include <iostream>
using namespace std;
int main() {
// ----- Declaración de constantes en tiempo de compilación -----
constexpr int tamaño {10}; // Entero constante conocido en tiempo de compilación
constexpr double radio {2.5}; // Número real constante en tiempo de compilación
constexpr char letra {'B'}; // Carácter constante en tiempo de compilación
// Uso de la constante para declarar un array
int array[tamaño]; // Tamaño conocido en tiempo de compilación
// Mostramos los valores
cout << "Tamaño del array: " << tamaño << endl;
cout << "Radio: " << radio << endl;
cout << "Letra: " << letra << endl;
return 0;
}
Directiva del preprocesador #define
En versiones más antiguas de C++ se solía usar una directiva de preprocesador llamada #define, que nos permite hacer sustituciones de texto a valores, es decir poner alias a ciertos valores. No son variables reales, por ejemplo:
#define PI 3.14159
Esta forma de trabajar con constantes está desaconsejada en C++ moderno.