type qualifiers storage classes c
Importanza dei qualificatori di tipo e delle classi di archiviazione in C ++.
In questo Serie di formazione C ++ esclusiva , estenderemo ulteriormente l'argomento delle variabili e vedremo qualificatori di tipo e classi di archiviazione in C ++ in questo tutorial. Sebbene questo sia un piccolo argomento, è molto importante e significativo per quanto riguarda la programmazione C ++.
I qualificatori di tipo in C ++ non cambiano il significato delle variabili o delle entità con cui vengono utilizzati, ma aggiungono solo informazioni extra all'entità.
Cosa imparerai:
Qualificatori di tipo in C ++
I qualificatori di tipo in C ++ aggiungono proprietà extra alla variabile come una variabile che è una costante o una volatile.
I qualificatori di tipo esprimono il modo in cui si accede a una variabile o dove una variabile viene archiviata in memoria mantenendo il significato o l'interpretazione della variabile stesso. In un certo senso, i qualificatori di tipo aggiungono più raffinamento alle variabili.
In C ++, il qualificatore di tipo viene specificato appena prima dell'identificatore di tipo (tipo di dati) della variabile.
I qualificatori di tipo in C ++ sono classificati come mostrato di seguito:
# 1) const
L'identificatore di tipo 'const' serve a definire gli oggetti di tipo const. Un oggetto o una variabile const non possono essere modificati una volta dichiarati. Se si tenta di modificare l'oggetto o la variabile const, il compilatore genera un errore. Abbiamo già visto costanti / letterali nel nostro precedente tutorial.
La definizione di costanti che utilizzano la parola chiave 'const' corrisponde al qualificatore di tipo 'const'.
# 2) volatile
Il qualificatore di tipo 'volatile' significa che il valore della variabile contrassegnata come volatile può essere modificato in altri modi non specificati dal programma. Le variabili che sono volatili cambiano solitamente a causa di alcuni fattori esterni e non necessariamente a causa del programma. In altre parole, sono di natura volatile.
Per esempio, una variabile che legge la temperatura in una parola reale può essere resa volatile in quanto la temperatura di lettura potrebbe non essere completamente controllata dal programma.
# 3) mutevole
Il qualificatore di tipo 'mutabile' rende i membri o la variabile modificabili.
Il qualificatore mutabile viene solitamente applicato a membri di classe non statici di tipo non const e non riferimento. In base a situazioni specifiche, potremmo aver bisogno che alcune variabili rimangano immutabili (non possono essere modificate) e alcune variabili siano modificabili. Questo tipo di qualificatore è di grande aiuto quando vogliamo caratteristiche mutabili.
Classi di archiviazione in C ++
Finora, abbiamo discusso in dettaglio tutte le variabili C ++. Abbiamo visto che le variabili vengono dichiarate con i rispettivi tipi di dati e quindi utilizzate nel programma. Per definire completamente una variabile, sono necessarie anche classi di archiviazione oltre ai loro tipi di dati.
Sebbene non abbiamo specificato alcuna classe di archiviazione fino ad ora per le variabili, c'era una classe di archiviazione predefinita 'auto' che è stata applicata a tutte le variabili.
Allora cosa sono le classi di archiviazione?
Le classi di archiviazione specificano come la variabile o una funzione deve essere trattata dal compilatore e come la memoria deve essere allocata per una variabile. Definisce la visibilità o l'ambito e la durata di una variabile. Una durata della variabile è quanto tempo la variabile rimarrà attiva.
La visibilità o l'ambito della variabile è a quali funzioni o moduli la variabile sarà accessibile. Queste classi di archiviazione vengono specificate prima del tipo di dati della variabile.
In C ++, abbiamo le seguenti classi di archiviazione:
# 1) Classe di archiviazione automatica
Questa è la classe di archiviazione predefinita. La classe di archiviazione 'Auto' viene applicata alle variabili locali e viene automaticamente assegnata dal compilatore alle variabili locali. Le variabili locali precedute dalla parola chiave 'auto' rimangono attive nella funzione in cui sono dichiarate e escono dall'ambito una volta che la funzione esce.
Se le variabili con classe di archiviazione 'auto' non vengono inizializzate o non viene assegnato alcun valore, hanno valori non definiti o non definiti.
Vediamo un esempio di variabili auto in un programma C ++.
#include using namespace std; int main() { int i; float f; cout<<'Variable i = '< Poiché non abbiamo assegnato alcun valore a loro, quando stampiamo queste variabili, vediamo che entrambe hanno valori = 0. Questo dipende interamente dal compilatore su quali valori assegnare alla variabile locale automatica se non è già stato assegnato alcun valore nel programma .
NOTA: A partire da C ++ 11, viene utilizzata la parola chiave auto per inferenza di tipo . Ciò significa che possiamo utilizzare un codice come auto i = 10 e il tipo di dati di I verrà dedotto direttamente dall'inizializzatore utilizzato per i. Quindi, se dichiariamo qualcosa come 'auto float f;', il compilatore mostrerà un errore.
Quindi, di solito non usiamo la dichiarazione per la classe di archiviazione auto poiché è implicito che l'impostazione predefinita sarà sempre la classe di archiviazione automatica.
# 2) Registra la classe di archiviazione
Quando abbiamo un requisito per cui una variabile necessita di un accesso più rapido, utilizziamo la classe di archiviazione del registro. Quindi, invece di memorizzare le variabili nella memoria ad accesso casuale (RAM), queste variabili vengono memorizzate nel registro della CPU e hanno una dimensione uguale a quella di un registro.
Inoltre, poiché queste variabili non hanno una posizione di memoria, non possiamo utilizzare l'operatore '&' con queste variabili.
Avere una variabile con la classe di memorizzazione del registro non garantisce che la variabile verrà sempre memorizzata nel registro. Invece, si presuppone solo che la variabile possa essere memorizzata in un registro e che sia completamente dipendente dall'hardware e dall'implementazione.
Le variabili di registro hanno portata e durata simili alle variabili auto.
Per esempio,
#include using namespace std; int main() { int i; register float f; cout<<'Variable i = '< # 3) Classe di archiviazione esterna La classe di archiviazione esterna è richiesta quando le variabili devono essere condivise tra più file. Le variabili esterne hanno ambito globale e queste variabili sono visibili all'esterno del file in cui sono dichiarate.
Poiché le variabili esterne sono le variabili dichiarate e definite all'esterno in un altro file, non vengono inizializzate.
Le variabili esterne hanno ambito globale e la durata delle variabili esterne è lunga quanto il programma in cui è dichiarata terminata.
Le variabili esterne possono essere dichiarate come segue:
extern int temp; int temp;
Nell'esempio precedente, abbiamo due dichiarazioni di variabili con lo stesso nome ma la prima è la variabile extern definita altrove. Questa variabile extern sarà utile quando includiamo il file sorgente in cui la variabile extern temp è definita nel nostro programma.
# 4) Classe di archiviazione statica
La classe di archiviazione statica indica al compilatore di mantenere il valore della variabile per tutta la durata del programma. Le variabili statiche sono simili alle variabili locali ma sono precedute da una parola chiave 'statica'.
A differenza delle variabili locali che escono dall'ambito dopo l'uscita della funzione, le variabili statiche non escono dall'ambito quando una funzione o un blocco esce e i loro valori vengono conservati tra le chiamate di funzione.
Le variabili statiche vengono inizializzate e l'archiviazione viene assegnata ad esse solo una volta nella vita di un programma. Le variabili statiche vengono inizializzate a 0 se non sono già inizializzate durante la dichiarazione.
Vediamo il seguente esempio per comprendere meglio la classe di archiviazione statica.
#include using namespace std; void printvar() { static int var; var++; cout<<'static variable var = '< Produzione:
printvar chiamata 1: variabile statica var = 1
printvar chiamata 2: variabile statica var = 2
printvar chiamata 3: variabile statica var = 3
printvar chiamata 4: variabile statica var = 4
Nel codice precedente, abbiamo una funzione 'printvar' in cui abbiamo dichiarato una variabile statica var di tipo int. Quindi incrementiamo questa variabile e la stampiamo. Nella funzione main, chiamiamo la funzione printvar quattro volte.
Ora controlla l'output. L'output mostra che con ogni chiamata di funzione la variabile statica var viene incrementata di 1 dal suo valore precedente. Questa è la classe di archiviazione statica che aiuta la variabile a mantenere il suo valore tra le chiamate di funzione. La variabile statica non viene reinizializzata per ogni chiamata di funzione.
Dovremmo anche notare che nella funzione printvar abbiamo appena dichiarato la variabile statica e non l'abbiamo inizializzata. È interessante notare che quando non inizializziamo le variabili statiche vengono assegnate con il valore iniziale 0.
Nota: La classe di archiviazione statica può essere applicata anche alle variabili globali. In questo caso, la variabile avrà un ambito globale e una memoria statica aggiuntiva.
# 5) Classe di archiviazione mutevole
La classe di archiviazione modificabile viene applicata solo agli oggetti della classe. Applicando la classe di memoria mutabile, il membro di un oggetto può sovrascrivere la funzione del membro 'const'. Ciò significa che un membro o un oggetto modificabile può essere modificato da una funzione membro che è 'const'.
Impareremo di più sulle funzioni e sugli oggetti const nonché sui membri mutabili nei nostri tutorial successivi quando impareremo la programmazione orientata agli oggetti in C ++.
Conclusione
Si tratta di specificatori di tipo e classi di archiviazione in C ++. Speriamo di essere stati in grado di chiarire tutti i concetti sulle classi di archiviazione e sugli identificatori di tipo attraverso questo tutorial.
miglior software per la messa a punto del PC 2019
Nel nostro prossimo tutorial, impareremo di più sui vari operatori utilizzati in C ++ insieme al loro utilizzo.
=> Controlla qui la serie completa di formazione C ++
Lettura consigliata
- Variabili in C ++
- Variabili Python
- Tutorial sull'interfaccia Java e sulla classe astratta con esempi
- Conversioni di tipo in C ++
- Variabili VBScript: come dichiarare e utilizzare le variabili - VBScript Dim
- Variabili e funzioni di JMeter
- 10 MIGLIORI provider di archiviazione cloud gratuiti (archiviazione online 2021)
- Tipi di test di migrazione: con scenari di test per ogni tipo