Witam,
const jest ważny gdy chcesz zablokować zmiennej możliwość zamiany wartości. Możesz modyfikator const stosować zamiast makro #define lub podczas usuwania "magicznych" liczb/wartości np.
#define LICZBA 55 //LICZBA jest podmieniana w programie przez preprocesor
const int liczba = 55; // zmienna liczba jest używana przez kompilator
//więc jest sprawdzana jej zgodność itp
for(int i = 0; i < 4; ++i)
const int liczba_bokow = 4;//przykladowa nazwa
for(int i = 0 ; i < liczba_bokow; ++i)
Według mnie najważniejsze zastosowanie const jest podczas przesyłania obiektu przez referencje do funkcji.Np
string name(const obiekt &arg)
Widząc takie wyrażenie kompilator zoptymalizuje sobie działanie. Wie że obiekt nie może ulec zmianie oraz jest przesyłany jego oryginał nie kopia. Troszkę przyspieszy to szybkość wykonywania programu.
Dobrą praktyką jest dodanie modyfikatora const do konstruktora kopiującego np.
Konstruktor(const Konstruktor&)
Dzięki przydomkowi const możesz skopiować obiekt, który posiada pole z tym modyfikatorem.
Przy pracy z const musisz uważać z szablonem const_cas<>() bo możesz wywołać undefined behavior
const int a = 0;
const int *pa = &a;
int *p = const_cast<int*>(pa);
*p = 1; // undefined behavior
cout << a << *p;
Więcej info
http://wojtek-m.blogspot.com/2010/08/wszystko-co-musisz-wiedziec-o-const-w-c.html