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

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

Patricia Arquette
Libérer: 2024-12-12 16:19:11
original
745 Les gens l'ont consulté

Why Can't I Initialize Non-Const Static Members Inside a C   Class?

Initialisation en classe de membres statiques en C

En C , la définition d'une variable membre statique à l'intérieur de la déclaration de classe n'est pas autorisée. Cette action entraîne l'erreur de compilation « ISO C interdit l'initialisation en classe du membre statique non const `j' ».

Raisons de l'interdiction :

  • Efficacité du code : L'initialisation de membres statiques dans la déclaration de classe pourrait entraîner des définitions en double lorsque la classe est incluse dans plusieurs compilations unités.
  • Contrôle de l'initialisation : Les membres statiques nécessitent souvent une logique d'initialisation spécifique, qui ne peut pas être garantie lorsqu'ils sont initialisés en ligne dans la déclaration de classe.

Exception pour les membres Const :

Les membres statiques Const peuvent être initialisés dans la déclaration de classe car ils ne sont pas modifiés après initialisation. Cela garantit l'efficacité du code et élimine le besoin d'initialisation explicite.

Implications pour les valeurs standard :

En C, les variables statiques sont automatiquement initialisées à 0 si elles ne sont pas explicitement initialisé. Cependant, en C , les variables statiques ne sont pas automatiquement initialisées. Vous devez les initialiser manuellement soit dans la déclaration de classe (pour les membres const), soit dans un fichier .cpp séparé.

Solution :

Pour définir une statique non const variable membre en C, vous devez l'initialiser dans un fichier .cpp distinct plutôt que dans la déclaration de classe.

Pour exemple :

// Header file
class Test {
 public:
  static int j;
};

// .cpp file
int Test::j = 0;
Copier après la connexion

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