Ambito
I nomi C++ possono essere utilizzati solo in alcune aree di un programma.Quest'area viene denominata “l'ambito di„ nome.L'ambito determina la sezione “durata„ di un nome che non indica un oggetto con estensione statica.L'ambito determina anche la visibilità di un nome, quando i costruttori di classe e distruttori vengono chiamati e quando le variabili locali all'ambito vengono inizializzate.(Per ulteriori informazioni, vedere costruttori e distruttori). Sono disponibili cinque tipi di ambito:
**ambito locale **Un nome dichiarato all'interno di un blocco è accessibile solo all'interno del blocco e blocchi chiusi da e solo dopo il momento della dichiarazione.I nomi degli argomenti formali di una funzione nel blocco più esterno della funzione dispongono di un ambito locale, come se fossero stati dichiarati nel blocco che racchiude il corpo della funzione.Si consideri il frammento di codice riportato di seguito.
{ int i; }
Poiché la dichiarazione di i si trova in un blocco racchiuso tra parentesi graffe, i ha un ambito locale e non è mai accessibile perché nessun accesso al codice prima della parentesi graffa di chiusura.
**ambito di funzione **Le etichette sono gli unici nomi che dispongono dell'ambito della funzione.Possono essere utilizzati ovunque all'interno di una funzione, ma non sono esterno accessibile da eseguire.
**ambito file **Qualsiasi nome dichiarato all'esterno di tutti i blocchi o classi hanno ambito file.È accessibile da qualsiasi punto nell'unità di conversione dopo la dichiarazione.I nomi con ambito file che non dichiara gli oggetti statici sono spesso chiamati nomi globali.
In C++, l'ambito file è anche nota come ambito dello spazio dei nomi.
Nell'ambito della classe I nomi dei membri della classe hanno ambito della classe.Le funzioni membro delle classi sono accessibili solo tramite gli operatori di selezione dei membri (. o - >) o operatori di puntatore a membro (. * o - >*) in un oggetto o un puntatore a un oggetto della classe, i dati non static del membro della classe sono considerati locali all'oggetto della classe.Si consideri la seguente dichiarazione di classe:
class Point { int x; int y; };
I membri della classe x e y vengono considerati come ambito della classe Point.
**Ambito del prototipo **I nomi dichiarati in un prototipo di funzione sono visibili solo fino alla fine del prototipo.il seguente prototipo dichiara tre nomi (strDestination, numberOfElementse strSource); questi nomi escono dall'ambito alla fine del prototipo:
errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );