Kursinnehåll
C++ OOP
C++ OOP
Statisk Medlemmar i Klassen
Inom objektorienterad programmering har nyckelordet static
en särskild betydelse och förändrar attributs och metoders beteende. Det finns ibland situationer där viss data behöver delas mellan alla objekt av en klass istället för att dupliceras för varje instans. Det är här statisk datamedlem kommer in i bilden.
Syntaxen för statiska medlemmar
Att skapa en statisk medlem i en klass är enkelt. Du behöver bara lägga till nyckelordet static
före deklarationen.
Example.h
class Example { public: static int static_attibute; static void static_method() { std::cout << "Static method!" << std::endl; } };
I exemplet ovan deklareras static_attribute
och static_method()
som statisk datamedlem i class Example
. Till skillnad från vanliga datamedlemmar är statiska datamedlemmar kopplade till klassen själv snarare än till enskilda objekt. Detta innebär att alla instanser av Example
delar samma statisk medlem.
Initiering är avgörande för statiska datamedlemmar och måste göras utanför klassen om inte medlemmen även använder nyckelordet 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;
Fördelar med att använda statiska medlemmar
Användningen av statiska datamedlemmar och statiska medlemsfunktioner ger flera fördelar.
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 }
Tack för dina kommentarer!