Kursinnhold
C++ OOP
C++ OOP
Statisk Medlemmer av Klassen
I objektorientert programmering har nøkkelordet static
en spesiell betydning, og endrer oppførselen til attributter og metoder. Det finnes situasjoner hvor vi trenger at visse data skal deles mellom alle objekter av en klasse i stedet for å bli replikert for hver instans. Dette er hvor statisk datamedlemmer kommer inn i bildet.
Syntaksen for statiske medlemmer
Å opprette et statisk medlem av en klasse er enkelt. Du trenger bare å sette nøkkelordet static
foran deklarasjonen.
Example.h
class Example { public: static int static_attibute; static void static_method() { std::cout << "Static method!" << std::endl; } };
I eksempelet ovenfor er static_attribute
og static_method()
deklarert som statisk datamedlemmer i class Example
. I motsetning til vanlige datamedlemmer, er statiske datamedlemmer tilknyttet selve klassen og ikke individuelle objekter. Dette betyr at alle instanser av Example
deler de samme statisk medlemmene.
Initialisering er avgjørende for statiske datamedlemmer, og dette må gjøres utenfor klassen med mindre medlemmet også bruker nøkkelordet 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;
Fordeler med å bruke statiske medlemmer
Bruken av statiske datamedlemmer og statiske medlemsfunksjoner gir flere fordeler.
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 }
Takk for tilbakemeldingene dine!