Inizializzazione (programmazione) - Initialization (programming)
Nella programmazione per computer , l' inizializzazione (o inizializzazione) è l' assegnazione di un valore iniziale per un oggetto dati o una variabile. Il modo in cui viene eseguita l'inizializzazione dipende dal linguaggio di programmazione , nonché dal tipo, dalla classe di archiviazione, ecc., di un oggetto da inizializzare. I costrutti di programmazione che eseguono l'inizializzazione sono generalmente chiamati inizializzatori ed elenchi di inizializzatori . L'inizializzazione è distinta da (e preceduta da) dichiarazione , sebbene i due a volte possano essere confusi nella pratica. Il complemento dell'inizializzazione è finalization , che viene utilizzato principalmente per gli oggetti, ma non per le variabili.
L'inizializzazione viene eseguita incorporando staticamente il valore in fase di compilazione oppure mediante assegnazione in fase di esecuzione . Una sezione di codice che esegue tale inizializzazione è generalmente nota come "codice di inizializzazione" e può includere altre funzioni una tantum come l'apertura di file; nella programmazione orientata agli oggetti , il codice di inizializzazione può essere parte di un costruttore (metodo di classe) o di un inizializzatore (metodo di istanza). L'impostazione di una posizione di memoria su zeri esadecimali è anche nota come "cancellazione" e viene spesso eseguita da un'esclusiva o da un'istruzione (entrambi gli operandi che specificano la stessa variabile), a livello di codice macchina , poiché non richiede ulteriore accesso alla memoria.
C famiglia di lingue
Inizializzatore
In C/C99/C++, un inizializzatore è una parte facoltativa di un dichiaratore . Consiste nel carattere '=' seguito da un'espressione o da un elenco di espressioni separate da virgole racchiuse tra parentesi graffe (parentesi graffe). Quest'ultimo elenco è talvolta chiamato "lista di inizializzazione" o "lista di inizializzazione" (sebbene il termine "lista di inizializzazione" sia formalmente riservato per l'inizializzazione dei membri di classe/struct in C++; vedi sotto ). Una dichiarazione che crea un oggetto dati, invece di descriverne semplicemente l'esistenza, è comunemente chiamata definizione .
Molti trovano conveniente tracciare una distinzione tra i termini "dichiarazione" e "definizione", come nella frase comunemente vista "la distinzione tra una dichiarazione e una definizione ...", il che implica che una dichiarazione designa semplicemente un oggetto dati (o funzione ). Infatti, secondo lo standard C++ , una definizione è una dichiarazione. Tuttavia, l'uso di "dichiarazioni e definizioni", sebbene formalmente errato, è comune. Sebbene tutte le definizioni siano dichiarazioni, non tutte le dichiarazioni sono definizioni.
C esempi:
int i = 0;
int k[4] = {0, 1};
char tx[3] = 'a';
char ty[2] = 'f';
struct Point {int x; int y;} p = { .y = 13, .x = 7 };
Esempi C++:
int i2(0);
int j[2] = {rand(), k[0]};
MyClass* xox = new MyClass(0, "zaza");
point q = {0, i + 1};
Elenco degli inizializzatori
In C++, un costruttore di una classe/struttura può avere un elenco di inizializzatori all'interno della definizione ma prima del corpo del costruttore. È importante notare che quando si utilizza un elenco di inizializzazione, i valori non vengono assegnati alla variabile. Sono inizializzati. Nell'esempio seguente, 0 viene inizializzato in re e im. Esempio:
struct IntComplex {
IntComplex() : re(0), im(0) {}
int re;
int im;
};
Qui, il costrutto : re(0), im(0)è l'elenco degli inizializzatori.
A volte il termine "elenco di inizializzatori" viene utilizzato anche per fare riferimento all'elenco di espressioni nell'array o nell'inizializzatore di strutture.
C++11 fornisce un concetto più potente di elenchi di inizializzatori , tramite un modello, chiamato std::initializer_list .
Inizializzazione predefinita
L'inizializzazione dei dati può avvenire senza una sintassi esplicita in un programma per farlo. Ad esempio, se le variabili statiche vengono dichiarate senza un inizializzatore, quelle dei tipi di dati primitivi vengono inizializzate con il valore zero del tipo corrispondente, mentre gli oggetti statici di tipo classe vengono inizializzati con i loro costruttori predefiniti .
Guarda anche
- Durata dell'oggetto
- Processo di finalizzazione e relativo modello di finalizzazione