- Incapsulamento ed estensibilità dei Tipi
- Ereditarietà
- Polimorfismo
- L' Overload
- Funzioni Virtuali
- I Membri Statici di una classe
- Templates di Funzioni
- Templates delle Classi
- Classi Astratte
I Membri Statici di una Classe/Struttura
I Membri Statici
The members of a class can be declared using the storage class modifier static. Questi dati membri sono condivisi da tutte le istanze di quella classe e sono memorizzati in un unico posto. Dati membri non-statici vengono creati per ciascuna variabile dell' oggetto della classe.
L'incapacità di dichiarare membri statici di una classe avrebbe comportato la necessità di dichiarare questi dati a livello globale del programma. Romperebbe la relazione tra i dati e la loro classe, e non è coerente con il paradigma di base della programmazione orientata agli oggetti - unione dati e metodi per la loro gestione in una classe. Il membro statico consente ai dati della classe che non sono specifici di una particolare istanza di esistere nell'ambito classe.
Poiché un membro della classe statica non dipende dalla particolare istanza, il riferimento è il seguente:
class_name::variable |
dove class_name è il nome della classe, e variabile è il nome del membro della classe.
Come vedete, per accedere al membro statico di una classe, viene utilizzato l'operatore di risoluzione del contesto :. Quando si accede ad un membro statico all'interno dei metodi della classe, l'operatore di contesto è opzionale.
Il membro statico di una classe deve essere esplicitamente inizializzato con il valore desiderato. Per questo esso deve essere dichiarato ed inizializzato in ambito globale. La sequenza di inizializzazione dei membri statici corrisponderà alla sequenza della loro dichiarazione in ambito globale.
Ad esempio, abbiamo la classe CParser usata per l'analisi del testo, ed abbiamo bisogno di contare il numero totale di parole e caratteri elaborati. Abbiamo solo bisogno di dichiarare i necessari membri della classe di statici ed inizializzarli a livello globale. Poi tutte le istanze della classe utilizzeranno i contatori comuni di parole e caratteri.
//+--------------------------------------------------------------------------------+
|
Un membro statico della classe può essere dichiarato con la parola chiaveconst. Tali costanti statiche devono essere inizializzate a livello globale con la parola chiave const :
//+--------------------------------------------------------------------------------+
|
Puntatore this #
La parola chiave this denota un implicitamente dichiarato puntatore a sé - ad un'istanza specifica della classe, nel contesto del quale viene eseguito il metodo. Esso può essere utilizzato solo in metodi non statici della classe. Il puntatore this è un implicito non-statico membro di qualsiasi classe.
Nelle funzioni statiche è possibile accedere solo a membri/metodi statici di una classe.
Metodi statici
In MQL5 possono essere utilizzate le funzioni membro del tipo static. Il modificatore static deve precedere il tipo di ritorno di una funzione nella dichiarazione all'interno di una classe.
class CStack
|
Un metodo con il modificatore const viene chiamato costante e non può modificare i membri impliciti della sua classe. Le dichiarazione di funzioni costanti di una classe e parametri costanti, viene denominata controllo di correttezza-const. Attraverso questo controllo si può essere sicuri che il compilatore garantisce la coerenza dei valori degli oggetti e restituisce un errore in fase di compilazione se vi è qualcosa di sbagliato.
Il modificatore const viene inserito dopo l'elenco degli argomenti all'interno di una dichiarazione della classe. La definizione fuori da una classe deve anche includere il modificatore const:
//+--------------------------------------------------------------------------------+
|
Un ulteriore argomento a favore dell'utilizzo del controllo di costanza è il fatto che in questo caso, il compilatore genera un'ottimizzazione speciale, per esempio, inserisce un oggetto costante nella memoria di sola lettura.
Una funzione statica non può essere determinata con il modificatore const, perché questo modificatore assicura la costanza dei membri dell' istanza quando si chiama questa funzione. Ma, come detto sopra, la funzione statica non può accedere a membri non statici della classe.
Vedi anche
Variabili statiche, Variabili, Riferimenti. Modificatore & e Parola Chiave this