Gli oggetti sono ottimi in quanto ogni istanza
permette di memorizzare un proprio set di dati, fornendogli un'unica
identità. Ma se volessimo memorizzare delle informazioni riguardanti
l'intera classe, ad esempio il numero delle istanze esistenti? Si può
desiderare di creare un insieme di nemici che combattano contro il
giocatore, basando il loro comportamento sul numero totale. Per
esempio che raggiunta una certa soglia non ne vengano creati altri
dal gioco, e sconfitti dal giocatore al di sotto di una certa soglia,
fuggano. E' possibile immagazzinare questo numero all'interno di ogni
oggetto, tuttavia sarebbe uno spreco di memoria, più il lavoro
necessario ad aggiornare tutti gli oggetti contemporaneamente. Invece
ciò può essere fatto con i membri dati statici, il modo migliore
utilizzato per accedervi è attraverso funzioni membro statiche.
Presentare il programma Roditore Statico
Il Roditore Statico dichiara un nuovo tipo di
roditore dotato di una variabile dati statica che immagazzina
il numero totale di roditori che sono stati creati. Inoltre definisce
delle funzioni statiche necessarie per mostrare questo valore. Per
prima cosa il programma fa istanza dei nuovi oggetti roditore,
e ne mostra il numero totale accedendo direttamente al membro dati
statico. Successivamente il programma fa istanza 3 nuovi roditori.
Quindi mostra il numero totale attraverso l'uso di una funzione
membro statica. Questo è il codice:
//Roditore Statico
//Dimostra l'uso di funzioni
e membri dati statici
#include <iostream>
using namespace std;
class Roditore
{
public:
static int i_Totali;
//membro dati statico, numero dei roditori
Roditore(int fame =0):
i_Fame(fame)
{ cout << “E' nato
un nuovo roditore”; << endl; ++i_Totali; }
static int DaiTotali()
//funzione membro statica
{ return i_Totali; }
private:
int i_Fame;
};
int Roditore::i_Totali =0;
//inizializzazione membri dati statici
int main()
{
cout << “Il numero
totale dei roditori e': ”;
cout <<
Roditore::i_Totali <<endl;
Roditore topo1, topo2,
topo3;
cout << “Il numero
totale dei roditori e': ”;
cout <<
Roditore::DaiTotali()<< endl;
return 0;
}
Nessun commento:
Posta un commento