En C, tenter de définir une variable statique publique avec une valeur initiale, telle que static int j=0;, déclenche une erreur de compilation. Ceci est attribué à la règle fondamentale de l'ISO C qui interdit l'initialisation en classe de variables membres statiques non constantes.
Contrairement à C, où de telles variables sont implicitement initialisées à zéro, C exige qu’ils restent non initialisés. Cette distinction découle du principe de transparence référentielle, qui garantit que la valeur d'un membre statique reste cohérente dans toutes les instances de la classe. Autoriser l'initialisation en classe pourrait compromettre ce principe, entraînant des incohérences dans les valeurs des variables.
Contrairement aux membres non constants, les membres statiques constants peuvent être initialisés en classe car leurs valeurs ne peuvent pas être modifiées après l'initialisation. Cela signifie que ces membres conservent une valeur cohérente tout au long de leur vie.
L'interdiction de l'initialisation en classe implique que les variables statiques en C ne sont pas automatiquement initialisées avec 0 comme en C. Au lieu de cela, ils restent non initialisés jusqu'à ce qu'une valeur soit explicitement attribuée ailleurs dans le programme.
Pour correctement initialiser les variables statiques en C , il est nécessaire de les définir dans le fichier d'en-tête et d'attribuer les valeurs initiales dans un fichier .cpp séparé, comme indiqué dans l'extrait de code ci-dessous :
// Header file class Test { public: static int j; }; // .cpp file // Initialize static variables int Test::j = 0;
En suivant cette approche, vous peut garantir que les variables statiques sont initialisées correctement et de manière cohérente dans toutes les instances de classe.
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!