Contenuti del Corso
OOP in C++
OOP in C++
Membri Statici della Classe
Nella programmazione orientata agli oggetti, la parola chiave static
assume un significato particolare, modificando il comportamento di attributi e metodi. Esistono situazioni in cui è necessario che alcuni dati siano condivisi tra tutti gli oggetti di una classe invece di essere replicati per ogni istanza. In questi casi entrano in gioco i membri dati statici.
Sintassi dei membri statici
La creazione di un membro statico di una classe è semplice. È sufficiente anteporre la dichiarazione con la parola chiave static
.
Example.h
class Example { public: static int static_attibute; static void static_method() { std::cout << "Static method!" << std::endl; } };
Nell'esempio sopra, static_attribute
e static_method()
sono dichiarati come membri dati statici della class Example
. A differenza dei membri dati regolari, i membri dati statici sono associati alla classe stessa piuttosto che ai singoli oggetti. Questo significa che tutte le istanze di Example
condividono gli stessi membri statici.
L'inizializzazione è fondamentale per i membri dati statici e deve essere effettuata al di fuori della classe, a meno che il membro non utilizzi anche la parola chiave 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;
Vantaggi dell'utilizzo dei membri statici
L'uso dei membri dati statici e delle funzioni membro statiche offre diversi vantaggi.
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 }
Grazie per i tuoi commenti!