Portée
Les noms C++ peuvent être utilisés uniquement dans certaines zones d'un programme.Cette zone est appelée une « portée » du nom.La portée détermine la « durée de vie » d'un nom ne correspond pas un objet d'étendue static.La portée détermine également la visibilité d'un nom, lorsque les constructeurs et les destructeurs de classe sont appelés, et lorsque des variables locales à la portée sont initialisées.(Pour plus d'informations, consultez constructeurs et le destructeurs.) Possède cinq types de portée :
Le nom de**Portée locale **A déclaré dans un bloc est accessible uniquement dans ce bloc et blocs entourés par l'intérieur, et uniquement après le point de déclaration.Les noms des arguments formels à une fonction dans la portée du bloc extérieur de la fonction ont une portée locale, comme s'ils avaient été déclarés à l'intérieur de le bloc englobant le corps de la fonction.Prenons le fragment de code suivant :
{ int i; }
Dans la mesure où la déclaration d' i est dans un bloc entouré par des accolades, i a une portée locale et n'est jamais accessible car aucun code n'y accéder avant l'accolade fermante.
Les noms de**Portée de la fonction **sont les seuls noms qui ont une portée de la fonction.Elles peuvent être utilisées partout dans une fonction, mais ne sont pas accessible en dehors qui s'exécutent.
**portée du fichier **que n'importe quel nom a déclaré à l'extérieur de tous les blocs ou les classes a une portée du fichier.il est accessible n'importe où dans l'unité de traduction après sa déclaration.Des étiquettes à la portée du fichier qui ne déclarez pas les objets statiques sont souvent appelés noms globaux.
En C++, la portée du fichier est également appelé la portée de l'espace de noms.
les noms deportée de classe des membres de classe ont une portée de classe.Les fonctions membres de classe sont seulement accessibles à l'aide de opérateurs de sélection des membres (. ou - >) ou des opérateurs de pointeur vers membre (.*ou - >*) sur un objet ou un pointeur vers un objet de cette classe ; les données non statique de membre de classe est considérée comme locale à l'objet de cette classe.Considérons la déclaration de classe suivante :
class Point { int x; int y; };
Les membres de classe x et y sont considérés comme dans la portée de classe Point.
les noms de**portée de prototype **déclarés dans un prototype de fonction sont visibles uniquement jusqu'à la fin de le prototype.Le prototype suivant déclare trois étiquettes (strDestination, numberOfElements, et strSource) ; ces noms sont hors de portée à la fin de le prototype :
errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );