Статичні Члени Класу
У об'єктно-орієнтованому програмуванні ключове слово static має особливе значення, змінюючи поведінку атрибутів і методів. Існують ситуації, коли необхідно, щоб певні дані були спільними для всіх об'єктів певного класу, а не дублювалися для кожного екземпляра. У таких випадках використовуються статичні члени даних.
Синтаксис статичних членів
Створення статичного члена класу є простим. Необхідно лише додати ключове слово static перед оголошенням.
Example.h
12345class 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
1234567class Example { public: static int static_attribute; static void static_method() { std::cout << "Static method!" << std::endl; } }; int Example::static_attribute = 0;
Переваги використання статичних членів
Використання статичних змінних-членів і статичних функцій-членів має кілька переваг.
main.cpp
12345678910111213141516171819202122#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 }
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain how to initialize a static data member outside the class?
What happens if I try to access a static member before initializing it?
Can you give an example of using a static method in a class?
Awesome!
Completion rate improved to 3.13
Статичні Члени Класу
Свайпніть щоб показати меню
У об'єктно-орієнтованому програмуванні ключове слово static має особливе значення, змінюючи поведінку атрибутів і методів. Існують ситуації, коли необхідно, щоб певні дані були спільними для всіх об'єктів певного класу, а не дублювалися для кожного екземпляра. У таких випадках використовуються статичні члени даних.
Синтаксис статичних членів
Створення статичного члена класу є простим. Необхідно лише додати ключове слово static перед оголошенням.
Example.h
12345class 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
1234567class Example { public: static int static_attribute; static void static_method() { std::cout << "Static method!" << std::endl; } }; int Example::static_attribute = 0;
Переваги використання статичних членів
Використання статичних змінних-членів і статичних функцій-членів має кілька переваг.
main.cpp
12345678910111213141516171819202122#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 }
Дякуємо за ваш відгук!