9
votes

Quelqu'un peut-il expliquer cet extrait (pourquoi ces bretelles sont-elles ici)?

Je m'excuse pour cette question trop simpliste, mais je ne peux pas sembler comprendre cet exemple dans le livre que je lis: xxx

Quels sont les accolades entourant int y pour? Pouvez-vous mettre des accolades partout où vous voulez? Si oui, quand et pourquoi le feriez-vous ou est-ce juste une erreur dans le livre?


1 commentaires

Il s'agit d'une technique, principalement appliquée dans le langage C, pour créer des valeurs temporaires locales après la première déclaration. Lorsque l'exécution quitte la braquée frisée finale, toute la variable créée dans cette étendue disparaît.


7 Réponses :


13
votes

Les accolades comme celui-ci indiquent que le code à l'intérieur des accolades est maintenant dans une autre portée. Si vous avez essayé d'accéder à Y en dehors des accolades, vous recevriez une erreur.


2 commentaires

Cela a du sens, mais ce qui me confondre est que je pensais que cela devrait être dans une fonction. Si vous pouvez simplement placer des accolades dans une fonction, je ne vois pas pourquoi vous auriez jamais à utiliser une fonction imbriquée - ou suis-je dans le champ gauche quelque part?


Une fonction a sa propre portée, mais il est possible d'avoir une portée dans une fonction également. Cela peut être très utile, par exemple, des objets C ++ ont des destructeurs et ceux-ci peuvent être utilisés pour libérer des ressources à un point parélectrique lorsque l'objet est hors de portée. Vous voudrez peut-être faire cette fonction médiane.



4
votes

C'est définitivement la portée. La variable y n'est pas accessible en dehors des accolades.


0 commentaires

4
votes

Les accolades désignent une portée, la variable X sera visible dans la portée de la suppression intérieure, mais y ne sera pas visible en dehors de sa portée de la corde.


0 commentaires

3
votes

Les bretelles définissent un niveau de portée. En dehors des accolades, y ne sera pas disponible.


0 commentaires

1
votes

qui ressemble à une erreur (ne pas connaître le contexte)

faire que vous avez encadré la valeur Y à l'intérieur de ces accolades et, en tant que telle, n'est pas disponible en dehors de celui-ci.

Bien sûr, s'ils essaient d'expliquer la portée, cela pourrait être un code valide


0 commentaires

6
votes

C'est une question de variables de scopage, par exemple: xxx


0 commentaires

3
votes

Au niveau de la sortie, les objets internes sont destructés. Vous pouvez, par exemple, joindre une section critique dans des accolades et construire un objet de verrouillage. Ensuite, vous n'avez pas à vous soucier d'oublier de le déverrouiller - le destructeur est appelé automatiquement lors de la sortie de la portée - normalement ou en raison d'une exception.


0 commentaires