En C , il existe une limitation interdisant l'initialisation de membres statiques non constants ou de tableaux statiques tableaux dans une déclaration de classe. Pour clarifier, examinons les mécanismes derrière cette restriction et ses ramifications.
La norme du langage C indique explicitement que seuls les types d'intégrales ou d'énumérations constantes statiques peuvent être initialisé lors de la définition de la classe. Par exemple, dans l'extrait de code fourni, le membre de données statique a est de type const int, qui peut être initialisé, alors que d'autres membres comme b ne le sont pas.
Cette restriction découle du fait que les membres statiques sont partagés entre toutes les instances d'une classe. Pour garantir l'unicité et la cohérence, la norme exige que tous les membres statiques aient une définition unique et bien définie en dehors de la déclaration de classe.
Extension du principe ci-dessus , l'initialisation en classe n'est pas non plus autorisée pour les tableaux statiques, même pour les tableaux constants comme c. Semblables aux membres statiques, les tableaux statiques nécessitent une définition unique pour maintenir la cohérence entre toutes les instances de la classe. Étant donné que l'initialiseur fait partie de la déclaration, cela entraînerait plusieurs définitions s'il était tenté au sein de la classe.
Pour contourner cette restriction d'initialisation pour les tableaux dans les déclarations de classe, le "Enum Trick" peut être utilisé. Cela implique de définir une énumération avec la taille de tableau souhaitée et de l'utiliser ensuite comme index pour le tableau.
La limitation susmentionnée imposée par la norme C a plusieurs implications :
Dans les révisions ultérieures du langage, à savoir C 11, la restriction sur l'initialisation des données statiques Les députés ont été quelque peu assouplis. Les données membres statiques de « type littéral const » peuvent désormais être initialisées dans la déclaration de classe. Le "type littéral" fait référence à des types primitifs comme int et char sans sémantique définie par l'utilisateur.
Cependant, les tableaux statiques ne peuvent toujours pas être initialisés dans la déclaration de classe, soulignant la nécessité d'une définition unique en dehors de la 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!