Condividi tramite


Dichiarazioni e definizioni (C++)

Le dichiarazioni dicono al compilatore che un elemento o un nome del programma esiste. Le definizioni specificano il codice o i dati descritti dal nome. Prima di poter essere utilizzato un nome deve essere dichiarato.

Dichiarazioni

Una dichiarazione introduce uno o più nomi in un programma. Le dichiarazioni possono ricorrere più volte in un programma. Di conseguenza, le classi, le strutture, i tipi enumerati e altri tipi definiti dall'utente possono essere dichiarati per ogni unità di compilazione. Il vincolo per questa dichiarazione multipla è che tutte le dichiarazioni devono essere identiche. Le dichiarazioni possono anche servire da definizioni, salvo quando la dichiarazione:

  1. È un prototipo di funzione (una dichiarazione di funzione senza il corpo della funzione).

  2. Contiene l'identificatore extern ma non l'inizializzatore (oggetti e variabili) o il corpo della funzione (funzioni). Ciò significa che la definizione non è necessariamente nell'unità di conversione corrente e fornisce il collegamento esterno del nome.

  3. È un membro dati statici in una dichiarazione di classe.

    Poiché i membri dati di classe statici sono specifiche variabili discrete condivise da tutti gli oggetti della classe, devono essere definiti e inizializzati all'esterno della dichiarazione di classe. Per ulteriori informazioni sulla creazione di classi e membri di classe, vedere Classi.

  4. È la dichiarazione del nome di una classe senza una definizione che la segue, ad esempio class T;.

  5. È un'istruzione typedef.

Esempi di dichiarazioni che sono anche le definizioni sono:

// Declare and define int variables i and j.
int i;
int j = 10;

// Declare enumeration suits.
enum suits { Spades = 1, Clubs, Hearts, Diamonds };

// Declare class CheckBox.
class CheckBox : public Control
{
public:
            Boolean IsChecked();
    virtual int     ChangeState() = 0;
};

Alcune dichiarazioni che non sono le definizioni sono:

extern int i;
char *strchr( const char *Str, const char Target );

Definizioni

Una definizione è una specifica univoca di un oggetto, di una variabile, di una funzione, di una classe o di un enumeratore. Poiché le definizioni devono essere univoche, un programma può contenere una sola definizione per un determinato elemento del programma specificato. È possibile una corrispondenza molti a uno tra dichiarazioni e definizioni. Esistono due casi in cui un elemento del programma può essere dichiarato e non definito:

  1. Una funzione è dichiarata ma non vi viene mai fatto riferimento tramite una chiamata di funzione o con un'espressione che accetta l'indirizzo della funzione.

  2. Una classe viene utilizzata solo in un modo in cui non richiede che la relativa definizione sia nota. Tuttavia, la classe deve essere dichiarata. Nel codice riportato di seguito è illustrata questa condizione:

    // definitions.cpp
    class WindowCounter;   // Forward reference; no definition
    
    class Window
    {
       // Definition of WindowCounter not required
       static WindowCounter windowCounter;
    };
    
    int main()
    {
    }
    

Vedere anche

Riferimenti

Concetti di base