**Область видимости** - возможность доступа к чему-либо: 1. Область видимости файла (объявление переменных) ```cpp int n; int m = 10; ``` 2. Пространство имен (**namespace**) ```cpp namespace Project { int x; } ``` 3. Область видимости блоков (локальные переменные) ```cpp int main() { for (i = 0; i < 10; i++) { int x; } } ``` 4. Область видимости функций ```cpp void f1() { int i; ... } ``` 5. Область видимости класса ```cpp class type { void func(); } void type::func(); ``` Определять функции нужно раздельно. Нельзя определить одну функцию внутри другой. Исключение - определение компонентных функций возможно внутри внешних функций, если внешние функции имеют свои классы. Оператор `::` имеет самый высокий приоритет среди операторов. `::` имеет бинарную и унарную формы. Самый маленький приоритет имеет оператор `,`. ## Вложенные классы ```cpp int N; int J; int M = 10; class pixel { public: class type_1 {...}; class type_2 {...}; }; pixel::type_1::J; pixel::type_2::J; pixel::J; ```