::
to operator zakresu.
Tutaj: int rcstring::atoi()
oznacza to, że atoi
jest funkcją składową klasy rcstring
, tzn znajduje są w jej zakresie; w jej przestrzeni nazw.
Tutaj: return ::atoi(data->s);
oznacza, że wywołujesz funkcję atoi
z globalnej przestrzeni nazw. ::
powoduje w tym wypadku "wyjście na zewnątrz", tzn poza przestrzeń nazw klasy rcstring
. Bez tego operatora oznaczałoby to wywołanie rekurencyjnie tej składowa funkcja w której jesteśmy, ale byłby błąd, bo parametry się nie zgadzają. Zamiast tego można było użyć std::atoi(data->s);
z nagłówka <cstdlib>
.