Статичні члени класів
Завантажити презентаціюПрезентація по слайдам:
Статичні члени класів Статичні дані-члени (поля) класів використовуються для збереження даних, спільних для всіх екземплярів класу, наприклад, кількість екземплярів класу, вказівник на вершину динамічного списку, деяку глобальну для всього класу константу, тощо. Статичний член класу має бути продекларованим у класі з допомогою службового слова static, а процес виділення під нього пам’яті та його ініціалізація відбувається поза класом. Звертання до статичних членів можливе через ім’я класу або через ідентифікатор екземпляру (В С# - тільки через ім’я класу). На статичні члени розповсюджуються звичайні правила доступу.
Слід зауважити, що в класі присутня лише декларація статичного члену, для його створення необхідно виділити пам’ять під нього та в разі необхідності проініціалізувати – це відбувається поза межами класу, навіть якщо статичний член задекларований як закритий. Більше того, якщо статичний член класу (скалярного типу) помічений службовим словом const, то він може бути проініціалізований в класі, але пам’ять під нього все рівно має бути виділена поза класом! Операція sizeof не враховує пам'ять, виділену під статичні поля.
Приклад. class Example { public : static int num; // декларація статичного члену класу int key; Example (int key_) : key (key_) {} }; /////////////////////////////////////////////////////////////// int Example :: num; // виділення пам’яті під статичний член // в разі відсутності ініціалізації він = 0 ////////////////////////////////////////////////////////////// int main(int argc, char *argv[]) { Example e (1), f (10); cout
Статичні функції-члени класів використовуються тільки для звертання до статичних даних-членів і не можуть використовувати звичайні дані та методи класу, адже вони не прив'язані до екземпляру, їм не передається вказівник this. Службове слово static вказується лише у декларації статичної функції, при її визначенні воно не повторюється. Звертання до статичних методів так само може відбуватись і через ім'я класу, і через ідентифікатор екземпляру. Слід зауважити, що звичайні функції-члени класу мають право працювати із статичними членами класу. Конструктор та деструктор не можуть бути статичними!
Схожі презентації
Категорії