Initialisation des membres statiques en C
En C, définir des membres statiques dans les définitions de classe peut être un sujet déroutant. Cet article aborde les questions concernant l'initialisation des variables statiques en C , explorant pourquoi l'initialisation en classe est interdite et comment les initialiser correctement.
1. Interdiction de l'initialisation en classe
Lorsque vous tentez de définir une variable statique publique dans une déclaration de classe, comme indiqué ci-dessous, des erreurs de compilation peuvent survenir :
public: static int j = 0;
En effet, le La norme C interdit l'initialisation de membres statiques non const dans les déclarations de classe, comme indiqué dans le message d'erreur : "ISO C interdit l'initialisation en classe de membres statiques non const 'j'."
2. Initialisation autorisée des membres Const
Contrairement aux membres statiques non const, les membres statiques const peuvent être initialisés dans les déclarations de classe. Ceci est autorisé car les membres const sont considérés comme des constantes au moment de la compilation et doivent être initialisés avec une valeur connue au moment de la compilation.
3. Initialisation des variables statiques en C
En C , les variables statiques ne sont pas automatiquement initialisées à zéro comme elles le sont en C. Pour initialiser les variables statiques en C , vous devez définir explicitement leurs valeurs initiales en dehors de la classe déclaration, généralement dans un fichier source séparé (.cpp).
Par exemple, pour initialiser la variable statique j déclarée ci-dessus, vous modifieriez le code comme suit :
// Header file class Test { public: static int j; }; // Source file int Test::j = 0;
Conclusion
En C, l'initialisation en classe des membres statiques non const est interdite en raison du besoin de flexibilité dans l'initialisation des variables statiques à l'extérieur de déclarations de classe. Cependant, les membres statiques Const peuvent être initialisés dans les déclarations de classe. Les variables statiques ne sont pas automatiquement initialisées à zéro en C ; leurs valeurs initiales doivent être explicitement définies.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!