venerdì 2 novembre 2012

Uso dei Dati e Funzioni Membro statiche

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