static c
Важливість та використання статики в C ++ з прикладами.
У попередніх темах про класи зберігання ми познайомились зі словом static. Ми дізналися про статичні змінні, які оголошені в програмі на C ++. Ми знаємо, що статичні змінні ініціалізуються лише один раз, і вони зберігають значення протягом усієї програми.
Подібно до статичних змінних, у цьому посібнику ми розширимо використання статичного ключового слова до:
- Статичні змінні члени в класі
- Статичні об'єкти класу
- Клас статичних методів
=> Ознайомтесь із поглибленими навчальними посібниками для C ++ тут.
Що ви дізнаєтесь:
- Статичні змінні члена в класі
- Статичні об'єкти класу
- Статичні методи в класі
- Призначення статичних функцій
- Висновок
- Рекомендована література
Статичні змінні члена в класі
Статична змінна ніколи не виділяється в стеку. Їм виділено місце на різних статичних сховищах. Це означає, що коли ми оголошуємо статичну змінну в класі, ця змінна є спільною для всіх об'єктів цього класу.
Оскільки статичні змінні ініціалізуються лише один раз і спільно використовуються усіма об'єктами класу, статичні змінні ніколи не ініціалізуються конструктором. Натомість статичну змінну слід явно ініціалізувати поза класом лише один раз, використовуючи оператор роздільної здатності області (: :).
Коли створюється перший об'єкт, усі статичні дані примітивного типу ініціалізуються до нуля, коли іншої ініціалізації немає.
безкоштовний редактор сценаріїв оболонки для Windows -
Перевірте наступний приклад, який демонструє статичну змінну в класі.
Як показано в коді нижче, у нас є статична змінна count як член зразка класу. Зверніть увагу на те, що ми ініціалізували цю змінну явно поза класом з початковим значенням = 0;
Потім ми збільшуємо цю статичну змінну в конструкторі класу.
Давайте розглянемо приклад програми.
#include #include using namespace std; class sample{ int var; static int count; public: sample(int var):var(var){ cout<<'Count = '< Вихід:
Кількість = 0
Кількість = 1
Кількість = 2
В основній функції ми створюємо три різні об’єкти. На виході ми бачимо, що значення статичної змінної зберігається між створеннями об'єкта, а не скидається при кожному створенні об'єкта. Це для першого об’єкта, count = 0. Потім воно збільшується до 1. Для наступного об’єкта count = 1 тощо.
Якби підрахунок був якою-небудь звичайною змінною, то результат був би:
Кількість = 0
Кількість = 0
Кількість = 0
Статичні об'єкти класу
Подібно до статичних змінних-членів класу, ми можемо оголосити об'єкти класу статичними. Об'єкти статичного класу також ініціалізуються лише один раз і залишаються активними протягом усієї програми. Оскільки об'єкт є типом, визначеним користувачем, об'єкт статичного класу ініціалізується подібно до звичайних об'єктів за допомогою конструктора.
Візьмемо приклад програмування, щоб краще зрозуміти об’єкти статичного класу.
#include using namespace std; class xyz { int i; public: xyz() { i=0; cout << 'Constructor::xyz'<У цій програмі ми маємо клас xyz з конструктором та деструктором. У головній функції ми оголошуємо змінну x = 0; Якщо x дорівнює нулю, ми створюємо статичний об'єкт класу xyz.
Програма дає наступний результат.
Вихід:
Конструктор :: xyz
Кінець Головна
Деструктор :: xyz
Зазвичай результат повинен бути
Конструктор :: xyz
Деструктор :: xyz
Кінець Головна
Але оскільки ми створюємо статичний об’єкт, цей об’єкт має область дії до кінця програми, а не тоді, коли об’єкт виходить за межі області дії (кінець оператора if). Це причина, по якій деструктор для об’єкта obj виконується лише після досягнення кінця основної функції.
Статичні методи в класі
Ми також можемо мати статичні методи в класі. Подібно до статичних об'єктів та змінних статичних членів, функції статичних членів також мають сферу дії до завершення виконання програми.
Коли метод класу оголошений статичним, він може отримати доступ лише до статичних членів, тобто статичних змінних та статичних функцій класу. Він не може отримати доступ до звичайних членів класу.
Крім того, для методів статичного класу не існує вказівника “this”.
Нам дозволено використовувати об’єкт та оператор точки для доступу до статичних методів класу, але для доступу до цих методів рекомендується використовувати ім’я класу та оператор роздільної здатності.
Нижче наведено приклад використання статичного методу в класі.
У цьому прикладі ми визначили дві статичні змінні-члени A і B та статичний метод printValues. Змінні A та B ініціалізуються значеннями 10 та 20 відповідно. У статичному методі printValues значення A та B зазнають відповідно збільшення та попереднього збільшення. Після цього значення друкуються.
В основному методі ми безпосередньо викликаємо статичний метод printValues, використовуючи ім'я класу, оскільки нам не потрібен будь-який об'єкт для виклику статичних функцій.
#include using namespace std; class Sample { static int A; static int B; public: static void printValues(){ A++; ++B; cout <<'Value of A: ' << A << endl; cout <<'Value of B: ' << B << endl; } }; int Sample :: A =10; int Sample :: B =20; int main(){ Sample::printValues(); return 0; }
Вихід:
Значення A: 11
Значення B: 21
Знімок екрана того ж результату наведено нижче.

Отже, на виході ми бачимо, що значення обох статичних змінних змінюються відповідно до операцій, що виконуються над ними.
Призначення статичних функцій
Ознайомившись із різними способами використання ключового слова static у цьому посібнику, залишається питання про те, яке призначення мають статичні функції.
Призначення статичних функцій можна коротко описати нижче:
- Ми використовуємо статичні функції, коли ця функція не залежить від об'єкта для виклику та роботи.
- Ще однією метою використання статичної функції є обмеження її використання. На відміну від глобальних функцій, доступ до статичних функцій обмежений файлом, в якому вони розміщені. Таким чином, щоб обмежити доступ до функції, ми робимо її статичною.
- Окрім вищезазначених двох причин, ми використовуємо статичні функції, коли не хочемо створювати об'єкт класу лише для виконання функції, яка не посилається на жодного члена класу.
Висновок
На закінчення цієї теми можна сказати, що статичне ключове слово в C ++ може використовуватися різними способами для оголошення змінних, змінних-членів, об’єктів класів, методів тощо.
Статичні функції-члени та змінні не повинні отримувати доступ до об'єкта, навпаки, вони можуть безпосередньо отримувати доступ за допомогою імені класу. Крім того, область дії статичних сутностей залишається протягом усього виконання програми. Отже, статичне ключове слово також може використовуватися для контролю доступу певної сутності.
У наших найближчих навчальних посібниках ми дізнаємось більше про кілька інших тем ООП у C ++.
=> Перегляньте тут, щоб побачити A-Z з навчальних посібників з C ++ тут.
Рекомендована література
- Знущання над приватними, статичними та недійсними методами за допомогою Mockito
- Статичне тестування та динамічне тестування - різниця між цими двома важливими методами тестування
- ТОП 40 інструментів аналізу статичного коду (найкращі інструменти аналізу вихідного коду)
- Найкращий БЕЗКОШТОВНИЙ підручник з C #: Остаточний посібник для C # для початківців
- Параметризація статичних значень у LoadRunner
- Змінні Python
- Типи успадкування в C ++
- Змінні в C ++