Que signifie la portée des fonctions? P>
Je comprends la portée des variables. Lorsque nous parlons du champ d'application des fonctions, est-il référé aux fonctions dans les structures (classes) ou présentées les fonctions normales que nous appelons principale () code> d'un programme C / C ++? < / p>
4 Réponses :
Je pense que ce que l'on entend ici, c'est la portée dans laquelle étiquettes em> (A étiquette em> est ce que vous utilisez avec Peut-être Cet article pourrait également vous aider à comprendre les champs.
Vous pouvez également jeter un coup d'œil sur Cette question sur Stackoverflow. p> goto code> Les instructions) sont visibles. p>
Celui-ci vous référez est la «portée de la fonction» et non la portée des fonctions.
@Felicepollano, désolé, j'ai mal compris la question.
Les fonctions peuvent avoir une classe mondiale, de noms, de classe (généralement appelées membres dans cette affaire) ou de la portée locale (dans une autre fonction). Ils peuvent également être statique code> leur donnant un lien interne ou dans un espace de noms anonyme, ce qui les rend inaccessibles en dehors d'une unité de traduction (tout en ayant encore une liaison externe afin de pouvoir utiliser les paramètres de modèle). P>
Merci, je me suis sentie avec le tien, la réponse de Jerry Coffin est complète
Cela ne répond pas à la question. Nulle partez-vous que vous mentionnez quelle application réellement signifie b> - seules les fonctions de la portée peuvent avoir.
Loely Parlant, une portée em> est une région dans laquelle les noms peuvent être déclarés. Les noms déclarés dans une portée sont accessibles dans cette portée et, dans certaines circonstances, également de l'extérieur. p>
(Pour être pédantiquement précis, c'est en fait une région de déclaration em> et la portée d'un nom correspond à la partie du programme dans lequel le nom est valide. Il commence là où il est déclaré et inclut le reste de cette région et, parfois, d'autres régions.) P>
Les étanches sont introduites par des espaces de noms, des classes et des instructions composées (c'est-à-dire des blocs des instructions de code entourés de La plupart des objets et fonctions ont des noms et chacun de ces noms est dans une portée. P>
de sorte que "la fonction d'une fonction" pourrait signifier deux choses: soit la portée définie par le corps de la fonction, dans laquelle ses variables locales sont déclarées; ou la portée (une classe ou un espace de noms) dans laquelle le nom de la fonction est déclaré. P>
Mise à jour: vous dites que vous voulez dire la portée du nom de la fonction. Cela commence toujours immédiatement après la déclaration; où cela se termine dépend de la mesure où cette déclaration était. P>
{} code>). Le dernier comprend les corps des fonctions. P>
Une portée ne signifie-t-elle que une région où les noms peuvent être accessibles i>, c'est-à-dire une portée peut parcourir plusieurs blocs par exemple. Au moins une portée d'une variable commence au point où elle est déclarée.
@unkUnunkulu: Techniquement, sa région dans laquelle le nom est valide et je l'utilise légèrement pour se référer à une région de déclaration i>. Je verrai si je peux rendre la réponse un peu plus correcte sans devenir trop compliquée.
Ouais, mauvaise formulation de moi, mon point principal est que le mot "déclaré" n'est pas correct à 100% non plus.
Merci, je voulais dire la portée dans laquelle le nom de la fonction déclarée comme vous l'avez mentionné
@Swathiappari: Ok, j'ai donné plus de détails à ce sujet.
"Parfois, d'autres régions." Comment??
@DonLarynx: Les espaces de noms peuvent être fermés et rouverts, de sorte que leur portée puisse couvrir plusieurs régions. La portée de la classe couvre la définition de la classe et les définitions des fonctions des membres et des classes imbriquées.
S'il vous plaît définir la région? Comment est-ce différent de la portée?
@DonLarynx Une région de déclaration est une région unique contiguë dans laquelle les déclarations peuvent apparaître. Une portée est un ensemble de régions peut-être non contiguelles dans lesquelles les noms déclarés sont accessibles. Voir la norme si vous souhaitez les définitions précises.
Oui, les fonctions ont une portée aussi, bien que leur portée soit généralement plus grande que celle de la plupart des variables.
in c [EDIT: qui était l'une des balises lorsque j'ai écrit cela], des fonctions ont une portée ou un fichier global. portée. La portée globale s'applique à une fonction normale visible dans tout le programme. La portée du fichier s'applique à une fonction que vous avez marquée comme "statique", elle n'est donc visible que dans la même unité de traduction. P>
C ++ utilise des noms légèrement différents pour ceux-ci, mais ont les mêmes concepts de base. Il ajoute des espaces de noms sous la forme des objets nommés «espace de noms» et Dans ce cas, même si la fonction est définie à l'intérieur de struct code> S /
classe code> es. À une exception près, une fonction dans un espace de noms n'est visible que dans cet espace de noms. L'exception est si vous définissez une fonction code> ami code> à l'intérieur d'un
classe code> /
struct code>: p>
x code>, son nom est injecté dans l'espace de noms environnant afin qu'il soit visible en dehors de x. P> p>
Où avez-vous rencontré ce libellé?
Notez qu'il y a la la portée de la fonction elle-même i> (où est cet identifiant valide? - Quel est le même que la portée d'une variable) et la portée de la fonction i>, qui est la portée Pour un autre identifiant renversé par une fonction (une variable définie dans une fonction est valide entre
{ code> et
} code>).
@sbi, bon point, les bonnes réponses ici adressent uniquement la première définition, mais la question pourrait être de l'autre.