Область видимості змінних (частина 2)




C ++, локальні і глобальні змінні, область видимості змінних, з ++ для початківців, простір іменВи вже познайомилися з першою статтею по темі Локальні і глобальні змінні. Область видимості в С ++. Хотілося б ще трохи доповнити її. А саме прикладом з просторами імен. Я не дарма писав префікс std:: перед оператором виведення cout. і endl. Це теж одна з формацій області видимості – простір імен. Якщо не вдаватися в особливі подробиці, простір імен, це якась група операторів / функций / переменных / типів, об'єднана в таку собі “фракцію” з ім'ям std.

std це простір імен з заголовки (хедера на нашу) iostream. cout, cin, endl та ін. – це все “династія” std. Якщо не підключити його в коді і не написати std:: перед цими операторами, С ++ скаже “давай до побачення”. Тому що він не в курсі, що це за cout такий без “прізвища”. До речі в С ++ і придуманий оператор використовуючи простір імен, який дозволяє не писати ім'я простору в якості префікса до кожного відвідувача в нього оператору . Це для зручності зроблено, але потрібно з цим оператором бути акуратніше, якщо є однойменні функції використовуються в програмі з різних просторів імен.

Простір імен добре там, де потрібно згрупувати щось в область видимості на ім'я. Наприклад в програмі можуть бути описані дві різні функції sum(). Одна повертає ціле, друга речовий. Якщо за завданням їх не можна описувати як перевантажені, то можна вкрутити їх в простір імен:

Простір імен тут визначає зону видимості для різних функцій з однаковим ім'ям. За межами простору імен цих функцій не існує.

C ++, локальні і глобальні змінні, область видимості змінних, з ++ для початківців, простір імен

Взагалі простір імен може стати спірним моментом щодо теорії області видимості. По факту це просто угруповання на ім'я, але діє вона так само, як і блок операторів {…}. Хочеш звернутися до операторів з цього простору – будь добрий звернися спочатку до імені простору: ціле число :: sum() Tut товстої кишки :: – це оператор розширення області видимості.

мабуть останнім, що можна сказати – область видимості дуже показова в ООП (об'єктно орієнтоване програмування). Коли в класі програміст описує private властивість (змінні чи функції-метод), він задає їй область видимості. Наприклад в коді типу:

властивості k і кілогерц мають різні області видимості. Перша доступна тільки всередині методів класу. До неї не можна звернутися в основній програмі, вона приватна (private ). Закрита для всіх, крім області видимості самого класу.

друга публічна (public). Її область видимості виходить за межі класу. з програми, де буде викликатися об'єкт цього класу вона доступна.

C ++, локальні і глобальні змінні, область видимості змінних, з ++ для початківців, простір імен

кілогерц оголошена як публічна змінна, її область видимості на відміну від зміною k , ширше. Тому компілятор проти її використання поза межами класу.

Який можна зробити з усього цього висновок? Гіки з піною у рота кричать на всіх порталах – “геть глобальні змінні!”. Гікам подобається обмежувати область видимість, локализуя і упаковуючи все в класи або простору імен. Гіки є гіки. Програміст не повинен зловживати областю видимості, інакше вийде, надання, коли щоб звернутися до змінної потрібно писати її шлях. Тобто,. щось типу моє ім'я::group1::PeremenkiDlaPrepoda::i Ну жесть просто.

Використання глобальних змінних поряд з локальними має бути з розумом – там де це доцільно писати глобальну. Там де немає – локалізувати.

Якщо ви не дивилися відео по темі Область видимості в С ++ в попередньому уроці – спеціально для вас розміщуємо його тут:

Нові уроки з програмування:

резюме
Область видимості змінних С ++
Назва статті
Область видимості змінних С ++
опис
Ви вже познайомилися з темою Локальні і глобальні змінні. Область видимості в С ++. Хочу ще трохи доповнити її. А саме прикладом з просторами імен. Відео
автор

залишити коментар

Код розміщуйте в тегах: <pre class="lang:C ++ декодуванням:true ">ВАШ КОД</заздалегідь>