Const et statique sont orthogonaux concepts en C et C++.
L' const
mot-clé indique au compilateur d'interdire la variable d'apparaître comme la lvalue de toute expression - essentiellement en lecture seule.
En C, l' static
mot a plusieurs usages en fonction de ce qu'il est appliqué. Lorsqu'il est appliqué à une variable d'une fonction, il indique que la variable n'est pas stocké dans la portée d'une fonction, mais est accessible à l'ensemble des invocations. Lorsqu'il est appliqué à une variable globale ou de la fonction, il devient accessible seulement à un fichier particulier - en d'autres termes, elle n'est accessible qu'à l'intérieur de l'unité de compilation (sauf déclaration extern
).
En C++, l' static
mot-clé peut être utilisé dans une définition de classe, à faire une variable ou de fonctions partagées dans toutes les instances de la classe, plutôt que d'être local pour chaque instance. En outre, une classe statique fonction en C++ ne peut accéder à des variables statiques de la classe (ou des classes, il a accès). Maintenant, en C++ const
ne donnent membres de la liaison interne à l'unité de compilation, sauf s'ils sont explicitement déclarés extern
- c'est peut-être à quoi vous faites allusion. Cela permet à des constantes de compilation partagée par l'ensemble de l'unité par le biais de l'utilisation de fichiers d'en-tête. Gardez à l'esprit, cependant, que les membres ne sont pas vraiment statique plutôt la constante est compilé dans chaque endroit où il est référencé.