II Wiersz objęty komentarzem nie zostanie skompilowany!
//napis[i] = 1 i++;
Deklaracja, że argument jest stałą, zabezpiecza go przed zmianą wewnątrz funkcji. Przy tworzeniu operatorów możemy zażyczyć sobie również obsługę stałych wyrażeń. We fragmencie „Przed” w funkcji DrukujNapisConst wywołujemy operator [] na stałej typu Napis. Ale nie utworzyliśmy operatora [], który może obsługiwać stałe argumenty. W efekcie uzyskujemy błąd kompilatora w instrukcji:
while(napis[i])
Dlaczego powstał błąd? Ponieważ próbowaliśmy zastosować operator [] do stałej Napis, a nie ma operatora, który może pobrać taki argument.
We fragmencie „Po” utworzyliśmy operator [], który może obsługiwać stałe, i dzięki temu kompilowanie kodu przebiega bezbłędnie.
Pamiętajmy, że zadeklarowanie stałej i próba jej zmiany spowoduje zgłoszenie błędu przez kompilator. Dlatego jeśli użyjemy kodu takiego, jak podany dalej, który rzeczywiście próbowałby zmienić wartość stałej, to otrzymamy błąd.
napis [i]-
Przykład: String::operator[] oraz PrintConstString() w pliku String.cpp
pisanie przejrzystego kodu
template <class T> dass Stos : public Drg <T> {
};
template <class T> dass Stos : private Drg <T> {