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

Kursusindhold

C++ OOP

C++ OOP

1. Grundlæggende OOP i C++
2. Konstruktører og Destruktører
3. Oversigt Over Indkapsling
4. Oversigt over Arv
5. Oversigt Over Polymorfi

book
Statisk Medlemmer af Klassen

I objektorienteret programmering har nøgleordet static en særlig betydning, idet det ændrer adfærden for attributter og metoder. Der opstår nogle gange situationer, hvor visse data skal deles mellem alle objekter af en klasse i stedet for at blive duplikeret for hver instans. Det er her, statisk data-medlemmer kommer ind i billedet.

Syntaksen for statiske medlemmer

Oprettelse af et statisk medlem af en klasse er ligetil. Du skal blot tilføje nøgleordet static foran deklarationen.

Example.h

Example.h

copy
12345
class Example { public: static int static_attibute; static void static_method() { std::cout << "Static method!" << std::endl; } };

I ovenstående eksempel er static_attribute og static_method() erklæret som statisk datamedlemmer af class Example. I modsætning til almindelige datamedlemmer er statiske datamedlemmer tilknyttet klassen selv i stedet for individuelle objekter. Dette betyder, at alle instanser af Example deler de samme statisk medlemmer.

Initialisering er afgørende for statiske datamedlemmer, og det skal ske uden for klassen, medmindre medlemmet også bruger nøgleordet 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;

Fordele ved at bruge statiske medlemmer

Brugen af statiske datamedlemmer og statiske medlemsfunktioner giver flere fordele.

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 af følgende udsagn om statiske medlemsvariabler er sandt?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 6

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

course content

Kursusindhold

C++ OOP

C++ OOP

1. Grundlæggende OOP i C++
2. Konstruktører og Destruktører
3. Oversigt Over Indkapsling
4. Oversigt over Arv
5. Oversigt Over Polymorfi

book
Statisk Medlemmer af Klassen

I objektorienteret programmering har nøgleordet static en særlig betydning, idet det ændrer adfærden for attributter og metoder. Der opstår nogle gange situationer, hvor visse data skal deles mellem alle objekter af en klasse i stedet for at blive duplikeret for hver instans. Det er her, statisk data-medlemmer kommer ind i billedet.

Syntaksen for statiske medlemmer

Oprettelse af et statisk medlem af en klasse er ligetil. Du skal blot tilføje nøgleordet static foran deklarationen.

Example.h

Example.h

copy
12345
class Example { public: static int static_attibute; static void static_method() { std::cout << "Static method!" << std::endl; } };

I ovenstående eksempel er static_attribute og static_method() erklæret som statisk datamedlemmer af class Example. I modsætning til almindelige datamedlemmer er statiske datamedlemmer tilknyttet klassen selv i stedet for individuelle objekter. Dette betyder, at alle instanser af Example deler de samme statisk medlemmer.

Initialisering er afgørende for statiske datamedlemmer, og det skal ske uden for klassen, medmindre medlemmet også bruger nøgleordet 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;

Fordele ved at bruge statiske medlemmer

Brugen af statiske datamedlemmer og statiske medlemsfunktioner giver flere fordele.

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 af følgende udsagn om statiske medlemsvariabler er sandt?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 6
some-alt