Cursusinhoud
C++ OOP
C++ OOP
Statische Leden van de Klasse
In objectgeoriënteerd programmeren heeft het sleutelwoord static
een bijzondere betekenis, doordat het het gedrag van attributen en methoden verandert. Er zijn situaties waarin bepaalde gegevens gedeeld moeten worden tussen alle objecten van een klasse in plaats van voor elk exemplaar te worden gerepliceerd. Dit is waar statische gegevensleden van pas komen.
De syntaxis van statische leden
Het aanmaken van een statisch lid van een klasse is eenvoudig. U hoeft alleen de declaratie vooraf te laten gaan door het sleutelwoord static
.
Example.h
class Example { public: static int static_attibute; static void static_method() { std::cout << "Static method!" << std::endl; } };
In het bovenstaande voorbeeld zijn static_attribute
en static_method()
gedeclareerd als statische gegevensleden van de class Example
. In tegenstelling tot reguliere gegevensleden zijn statische gegevensleden gekoppeld aan de klasse zelf in plaats van aan individuele objecten. Dit betekent dat alle instanties van Example
dezelfde statische leden delen.
Initialisatie is essentieel voor statische gegevensleden en moet buiten de klasse worden uitgevoerd, tenzij het lid ook het const
-sleutelwoord gebruikt.
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;
Voordelen van het gebruik van statische leden
Het gebruik van statische gegevensleden en statische lidfuncties biedt verschillende voordelen.
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 }
Bedankt voor je feedback!