Zakres
Nazwy C++ mogą być używane tylko w niektórych regionach programu.Ten obszar jest nazywany "zakres" nazwę.Zakres określa "okres istnienia" nazwy, które nie wyznaczają obiektu statycznego zakresu.Zakres określa także widoczność nazwa, o nazwie klasy konstruktory i destruktory i gdy zostały zainicjowane zmienne lokalne dla zakresu.(Aby uzyskać więcej informacji, zobacz konstruktory i destruktory.) Istnieje pięć rodzajów zakresu:
Zakres lokalny nazwa zadeklarowana wewnątrz bloku jest dostępne tylko w obrębie tego bloku i bloki ujęte przez nią i tylko po pkt deklaracji.Nazwy formalne argumenty funkcji w zakresie peryferyjnych bloku funkcji mają zakres lokalny tak, jakby miał zostały zadeklarowane wewnątrz bloku, otaczającą treści funkcji.Należy rozważyć następujący fragment kodu:
{ int i; }
Ponieważ deklaracji i znajduje się w bloku, ujęta w nawiasy klamrowe, i ma zakres lokalny i nigdy nie jest dostępny, ponieważ żaden kod nie korzysta ona przed nawias klamrowy zamykający.
Działać zakres etykiety są tylko nazwy, które mają zakres funkcji.Ich może być używana w dowolnym miejscu w obrębie danej funkcji, ale nie są dostępne spoza tej funkcji.
Plik zakresu dowolną nazwę zadeklarowanych poza wszystkich bloków lub klasy ma zakres pliku.Jest dostępne w dowolnym miejscu jednostka tłumaczenia po jego zgłoszeniu.Nazwy z zakresu plików, które nie zadeklarować obiekty statyczne są często nazywane nazwy globalne.
W języku C++ zakres pliku jest znany również jako zakres obszaru nazw.
Zakres klasy nazwy członków klasy mają zakres klasy.Funkcje składowe klasy jest możliwy tylko za pomocą operatorów wybranych elementów członkowskich (. lub ->) lub wskaźnika do podmiotów (. * lub – > *) do obiektu lub wskaźnik do obiektu klasy; dane elementu członkowskiego niestatycznego klasy jest traktowane jako lokalne względem obiektu tej klasy.Rozważmy następującą deklarację klasy:
class Point { int x; int y; };
Członkowie klasy x i y są uważane za w zakresie klasy Point.
Zakres prototyp nazwy zadeklarowanej w prototyp funkcji są widoczne tylko do końca prototypu.Następujący prototyp deklaruje trzy nazwy (strDestination, numberOfElements, i strSource); te nazwy go poza zakresem na końcu prototyp:
errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );