Rozsah
Názvy jazyka C++ lze použít pouze v některých oblastech programu.Tato oblast se nazývá „rozsah“ názvu.Rozsah určuje „životnost“ názvu, který neoznačuje objekt statického rozsahu.Rozsah také určuje viditelnost názvu, kdy jsou volány konstruktory a destruktory třídy a kdy jsou inicializovány proměnné místního rozsahu. (Další informace naleznete v tématech Konstruktory and Destruktory.) Existuje pět typů rozsahu:
**Místní rozsah **Název deklarovaný v rámci bloku je přístupný pouze v rámci tohoto bloku a v blocích vnořených v tomto bloku a pouze za bodem deklarace.Názvy formálních argumentů funkce v rozsahu vnějšího bloku funkce mají místní rozsah, jako kdyby byly deklarovány uvnitř bloku obklopujícího tělo funkce.Zvažte následující fragment kódu:
{ int i; }
Protože deklarace proměnné i je v bloku uzavřeném ve složených závorkách, má proměnná i místní rozsah a není nikdy přístupná, protože k ní před uzavírací složenou závorkou nepřistupuje žádný kód.
**Rozsah funkce **Popisky jsou jediné názvy, které mají rozsah funkce.Lze je použít kdekoli v rámci funkce, ale mimo tuto funkci nejsou k dispozici.
**Rozsah souboru **Jakýkoli název deklarovaný mimo všechny bloky nebo třídy má rozsah souboru.Po jeho deklaraci je přístupný kdekoli v rámci jednotky převodu.Názvy s rozsahem souboru, které nedeklarují statické objekty se nazývají globální názvy.
V jazyce C++ je rozsah souboru také známý jako rozsah oboru názvů.
Rozsah třídy Názvy členů třídy mají rozsah třídy.K členským funkcím třídy lze přistupovat pouze pomocí operátorů výběru členů (. nebo –>) nebo operátorů ukazatel na člen (. * nebo –>*) objektu nebo ukazatele na objekt této třídy. Datové členy objekt nestatické třídy považuje za místní.Zvažte následující deklaraci třídy:
class Point { int x; int y; };
Členy třídy x a y jsou v rozsahu třídy Point.
**Rozsah prototypu **Názvy deklarované v prototypu funkce jsou viditelné pouze do konce tohoto prototypu.Následující prototyp deklaruje tři názvy (strDestination, numberOfElements a strSource). Tyto názvy se na konci prototypu dostanou mimo rozsah:
errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );