Зміст курсу
C++ ООП
C++ ООП
Статичні Члени Класу
У об'єктно-орієнтованому програмуванні ключове слово static
має особливе значення, змінюючи поведінку атрибутів і методів. Існують ситуації, коли необхідно, щоб певні дані були спільними для всіх об'єктів певного класу, а не дублювалися для кожного екземпляра. У таких випадках використовуються статичні члени даних.
Синтаксис статичних членів
Створення статичного члена класу є простим. Необхідно лише додати ключове слово static
перед оголошенням.
Example.h
class Example { public: static int static_attibute; static void static_method() { std::cout << "Static method!" << std::endl; } };
У наведеному вище прикладі static_attribute
та static_method()
оголошені як статичні члени даних класу class Example
. На відміну від звичайних членів даних, статичні члени даних асоціюються з класом загалом, а не з окремими об'єктами. Це означає, що всі екземпляри Example
спільно використовують одні й ті ж статичні члени.
Ініціалізація є важливою для статичних членів даних, і вона повинна виконуватися поза межами класу, якщо тільки член не використовує також ключове слово const
.
FirstExample.h
SecondExample.h
class Example { public: static int static_attribute; static void static_method() { std::cout << "Static method!" << std::endl; } }; int Example::static_attribute = 0;
Переваги використання статичних членів
Використання статичних змінних-членів і статичних функцій-членів має кілька переваг.
main.cpp
#include <iostream> class Example { public: static int static_attribute; static void static_method() { std::cout << "Static method!" << std::endl; } }; // Initialization of the static member variable int Example::static_attribute = 0; int main() { Example obj1, obj2; obj1.static_attribute = 100; // Modifying static_attribute through obj1 std::cout << obj1.static_attribute << std::endl; std::cout << obj2.static_attribute << std::endl; Example::static_attribute = 25; // Modifying static_attribute through class Example::static_method(); // Calling the static method through class }
Дякуємо за ваш відгук!