Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Statisk Medlemmer av Klassen | Grunnleggende om OOP i C++
C++ OOP
course content

Kursinnhold

C++ OOP

C++ OOP

1. Grunnleggende om OOP i C++
2. Konstruktører og Destruktører
3. Oversikt Over Innkapsling
4. Oversikt over Arv
5. Oversikt over Polymorfisme

book
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

Example.h

copy
12345
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

FirstExample.h

SecondExample.h

SecondExample.h

copy
1234567
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

main.cpp

copy
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 }
question mark

Hvilket av følgende utsagn om statiske medlemsvariabler er sant?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

course content

Kursinnhold

C++ OOP

C++ OOP

1. Grunnleggende om OOP i C++
2. Konstruktører og Destruktører
3. Oversikt Over Innkapsling
4. Oversikt over Arv
5. Oversikt over Polymorfisme

book
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

Example.h

copy
12345
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

FirstExample.h

SecondExample.h

SecondExample.h

copy
1234567
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

main.cpp

copy
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 }
question mark

Hvilket av følgende utsagn om statiske medlemsvariabler er sant?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 6
some-alt