Le mot-clé static
est celui qui a plusieurs significations en C++ que je trouve très confus et je ne peux jamais plier mon esprit autour de comment son supposé travailler.
De ce que j'ai compris, il n'y static
durée de stockage, ce qui signifie qu'il dure pour toute la durée du programme dans le cas d'un mondial, mais quand vous parlez d'un local, cela signifie qu'il est initialisé à zéro par défaut.
La Norme C++ dit cela pour les membres de données de classe avec le mot-clé static
:
3.7.1 Statique de la durée de stockage [de base.stc.statique]
3 Le mot-clé static peut être utilisé pour déclarer une variable locale statique de la durée de stockage.
4 Le mot-clé statique appliqué à une classe membre de données dans une définition de classe donne la donnée membre statique de la durée de stockage.
Ce qui signifie-t-il avec une variable locale? Est une fonction de variable locale? Parce qu'il y a aussi que, lorsque vous déclarez une fonction locale comme static
que c'est seulement initialisé une fois, la première fois qu'il entre dans cette fonction.
Elle aussi ne parle que de la durée de stockage en ce qui concerne les membres de la classe, qu'en est-il de la non instance spécifique, c'est aussi une propriété de l' static
non? Ou est que la durée de stockage?
Maintenant, qu'en est-il avec static
et de la portée du fichier? Sont toutes les variables globales considéré comme ayant statique de la durée de stockage par défaut? La suite (à partir de la section 3.7.1) semble l'indiquer:
1 Toutes les variables qui n'ont pas de dynamique de la durée de stockage, n'ont pas de thread durée de stockage, et sont pas locales ont statique de la durée de stockage. Le stockage de ces entités doit durer pendant toute la durée du programme (3.6.2, 3.6.3)
Comment est - static
se rapportent à la liaison d'une variable?
Toute cette static
mot-clé est carrément déroutant, quelqu'un peut-il préciser les différents usages de l'anglais et aussi me dire quand pour initialiser un static
membre de la classe?