Udostępnij za pośrednictwem


Zakres

Nazwy języka C++ mogą być używane tylko w niektórych regionach programu.Obszar ten jest nazywany "zakresem" nazwy.Zakres określa "okres istnienia" nazwy, która nie oznacza obiektu o rozmiarze statycznym.Zakres określa również widoczność nazwy, gdy konstruktory i destruktory klasy są wywoływane i zmienne lokalne dla zakresu są zainicjowane. (Aby uzyskać więcej informacji, zobacz Konstruktory i Destruktory). Istnieje pięć rodzajów zakresów:

  • Zakres lokalny nazwa zadelarowana wewnątrz jest dostępna tylko w ramach tego bloku i blokach ujętych przez nią i tylko po punkcie deklaracji.Nazwy formalnych argumentów funkcji w zakresie peryferyjnego bloku funkcji mają zakres lokalny, jak gdyby zostały zadeklarowane wewnątrz bloku, wewnątrz treści funkcji.Rozważ następujący fragment kodu:

    {
        int i;
    }
    

    Ponieważ deklaracja i jest w bloku ujęta w nawiasy klamrowe, i ma zakres lokalny i nigdy nie jest dostępna, ponieważ żaden kod nie uzyskuje dostępu do niej przed nawiasem klamrowym zamykającym.

  • Funkcja zakres etykietuje tylko nazwy, które mają zakres funkcji.Może być używana w dowolnym miejscu w obrębie danej funkcji, ale nie jest dostępna poza tą funkcją.

  • Zakres pliku zakres pliku jest dowolna nazwą zadeklarowaną na zewnątrz wszystkich bloków lub klas.Jest dostępny wszędzie w jednostce translacji po jej zadeklarowaniu.Nazwy z zakresu plików, które nie są deklarowane jako obiekty statyczne są często nazywane nazwami globalnymi.

    W języku C++ zakres pliku jest również znany jako zakres obszaru nazw.

  • Klasa zakres nazywa członków klasy mających zakres klasy.Funkcje składowe klasy są dostępne tylko przy użyciu operatorów wybranych elementów członkowskich (. lub —>) lub operatorów wskaźnik do członków (. * lub —>*) do obiektu lub wskaźnika do obiektu tej klasy; dane elementu członkowskiego niestatycznego klasy są traktowane jako lokalny obiekt tej klasy.Rozważ następującą deklarację klasy:

    class Point
    {
        int x;
        int y;
    };
    

    Członkowie klasy x i y są brane pod uwagę za w zakresie klasy Point.

  • Zakres prototyp nazwy zadeklarowane w prototypie funkcji są widoczne tylko do końca prototypu.Następujący prototyp deklaruje trzy nazwy (strDestination, numberOfElements i strSource); te nazwy wykraczają poza zakres na końcu prototypu:

    errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );
    

Zobacz też

Informacje

Koncepcje podstawowe