Lekcja 25
Przesłanianie zmiennych w języku C++. Zasięg a dostęp do zmiennych.
Wprowadzenie
W poprzedniej lekcji przedstawiłem Ci podstawowe zasady dotyczące zmiennych, zarówno globalnych jak i lokalnych. Nie wyjaśniłem jednak jeszcze wszystkiego odnośnie nazewnictwa zmiennych i współistnienia obok siebie zarówno zmiennych globalnych, jak i lokalnych oraz współistnienia zmiennych lokalnych w różnych zasięgach.
W tej lekcji postaram Ci się właśnie przedstawić, w jaki sposób pogodzić ze sobą kilka zmiennych globalnych i lokalnych oraz wyjaśnić czy mogą współistnieć zmienne o tych samych nazwach, czy też nie.
Schemat rozważanego problemu
#include <iostream>
using namespace std;
//1
int main()
{
//2
{
//3
{
//4
}
//3
}
//2
{
//5
{
//6
{
//7
}
//6
}
//5
}
//2
cout <<endl<<"Nacisnij ENTER aby zakonczyc..."<<endl;
getchar();
return 0;
}
program nr 25.1
Powyższy kod przedstawia szkielet programu, którym będziemy się starali zająć w tej lekcji. Jeśli przypomnisz sobie poprzednią lekcję, to wiesz już na pewno, że nawiasy klamrowe oprócz tego, że służą do grupowania instrukcji, wyznaczają również zasięg lokalny.
W powyższym schemacie, umieściłem kilka par nawiasów klamrowych i za pomocą komentarzy oznaczyłem za pomocą numeru zasięg lokalny. Jeśli się dobrze przyjrzysz, zauważysz, że niektóre z zasięgów pojawiają się kilka razy. Dzieje się tak dlatego, że gdy pewien zasięg przestaje obowiązywać (dzieje się to, kiedy w programie znajduje się zamykający nawias klamrowy), to obowiązującym staje się zasięg wcześniejszy.
Przykładowo, gdy na początku funkcji main, obowiązywał zasięg 2, pojawił się zasięg 3. Po zakończeniu zasięgu 3, obowiązującym jest nadal zasięg 2. Oczywiście dodatkowo w trakcie obowiązywania zasięgu nr 3, pojawił się zasięg 4, ale gdy ten przestał obowiązywać, znów zasięg nr 3 stał się obowiązujący.