Partager via


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 );
    

Voir aussi

Référence

Concepts de base