Kursinhalt
C++ OOP
C++ OOP
Statische Mitglieder der Klasse
Im objektorientierten Programmieren besitzt das Schlüsselwort static
eine besondere Bedeutung und verändert das Verhalten von Attributen und Methoden. Es gibt Situationen, in denen bestimmte Daten von allen Objekten einer Klasse gemeinsam genutzt werden sollen, anstatt für jede Instanz repliziert zu werden. Hier kommen statische Datenmember zum Einsatz.
Die Syntax der statischen Member
Das Erstellen eines statischen Members einer Klasse ist unkompliziert. Sie müssen lediglich der Deklaration das Schlüsselwort static
voranstellen.
Example.h
class Example { public: static int static_attibute; static void static_method() { std::cout << "Static method!" << std::endl; } };
Im obigen Beispiel werden static_attribute
und static_method()
als statische Datenmitglieder der class Example
deklariert. Im Gegensatz zu regulären Datenmitgliedern sind statische Datenmitglieder mit der Klasse selbst und nicht mit einzelnen Objekten verknüpft. Das bedeutet, dass alle Instanzen von Example
dieselben statischen Mitglieder teilen.
Die Initialisierung ist für statische Datenmitglieder entscheidend und muss außerhalb der Klasse erfolgen, es sei denn, das Mitglied verwendet zusätzlich das Schlüsselwort 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;
Vorteile der Verwendung statischer Member
Der Einsatz von statischen Datenmitgliedern und statischen Memberfunktionen bietet mehrere Vorteile.
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 }
Danke für Ihr Feedback!