Maison > développement back-end > C++ > Pourquoi ne puis-je pas initialiser des variables membres statiques non constantes dans une classe C ?

Pourquoi ne puis-je pas initialiser des variables membres statiques non constantes dans une classe C ?

Barbara Streisand
Libérer: 2024-12-17 10:56:24
original
646 Les gens l'ont consulté

Why Can't I Initialize Non-Constant Static Member Variables Within a C   Class?

Comprendre l'interdiction d'initialisation en classe pour les membres statiques non constants

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.

Justification de l'interdiction

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.

Initialisation des membres statiques constants

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.

Implication pour l'initialisation des variables statiques

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.

Initialisation appropriée en C

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;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal