====== Konstanty ======
Konstanta je pojmenovaná hodnota, která se nemění. Nejčastěji její hodnotu definujeme už v době překladu. Programovací jazyk C++ podporuje i konstantu definovanou za běhu. Pro všechny konstanty platí, že jejich hodnotu nelze po jejím nadefinování změnit.
===== Preprocesorová C konstanta =====
Preprocesorové konstanty se zpracovávají v první fázi překladu. Nemají žádný faktický vliv na paměť, protože se jedná pouze o automatizované nahrazení definovaného identifikátoru, obdobně jako by jste použili před kompilací příkaz editoru - najít a nahradit (//CTRL+H//) a nahradili konkrétní název za hodnotu.
Nespornou výhodou je nulová alokace extra paměti, nevýhodou naopak, že není silně typovaná a kompilátor o ní nemá valné informace.
#include
#define PI 3.14159
// some code
int main(/*...*/)
{
printf("Hodnota pi je %lf.\n", PI);
}
===== Typovaná C++ konstanta =====
Jedná se o speciální proměnou označenou klíčovým slovem ''const'', kterou je třeba definovat hodnotou. Kompilátor se k takové hodnotě chová jako k proměnné, ale zabrání změnu její hodnoty. Znamená to, že fakticky existuje na nějakém místě v paměti. Kompilátor pak může lépe kontrolovat syntax/sémantiku kódu a optimalizovat ho.
Tento typ konstanty je možné definovat i za běhu. Často se hodí pokud chceme něco na chvíli uložit pod vlastním identifikátorem a víme, že se daná hodnota nebude měnit. Kompilátor pak dokáže takovou konstantu optimalizovat pro lepší výkon.
#include
const double PI = 3.14159;
// some code
int main(/*...*/)
{
printf("Hodnota pi je %lf.\n", PI);
int cislo;
scanf("%d", &cislo);
const int UZIV_KONSTANTA = cislo;
printf("Konstanta definovana za behu je %d.\n", UZIV_KONSTANTA);
}