Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens des « références non définies » aux membres statiques en C ?

Pourquoi est-ce que j'obtiens des « références non définies » aux membres statiques en C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-09 00:13:10291parcourir

Why Do I Get

Comprendre les références non définies aux membres statiques

Lorsque vous travaillez avec des classes contenant des données membres statiques, vous pouvez rencontrer des erreurs liées aux « références non définies ». Cela peut être attribué à un manque de compréhension claire des déclarations et des définitions.

Déclarations et définitions

Dans une déclaration de classe, les données membres statiques sont généralement déclarées mais non définies. . Cette déclaration établit l'existence et le type du membre. Cependant, à moins qu'elle ne soit utilisée d'une manière nécessitant une adresse, une définition spécifique n'est pas encore nécessaire.

Pour fournir une définition pour une donnée membre statique, elle doit être placée dans un fichier source distinct contenant l'implémentation pour la classe. La définition se compose du nom du membre, précédé de l'opérateur class :: scope, suivi d'un initialiseur facultatif.

Exception pour les constantes

Pour les membres statiques qui sont const types intégral ou énumération, un initialiseur peut être fourni dans la déclaration de classe. Cela n'annule pas la nécessité d'une définition dans le fichier source, mais garantit que la définition ne contient pas d'initialiseur.

Modèles

Données statiques membres de la classe les modèles sont définis différemment. La définition est incluse dans le fichier d'en-tête à côté de la déclaration de classe. Cette exception à la règle de définition unique permet au membre statique d'être défini une fois pour chaque instanciation du modèle.

Autres utilisations du membre statique

Au-delà des membres de données statiques, static peut également être appliqué à des fonctions et des objets dans un contexte non-classe, où il dénote différentes significations :

  • Static Fonctions : Déclarées dans une portée de fonction, ces fonctions conservent leurs valeurs entre les appels de fonction.
  • Objets statiques : Déclarés dans une portée d'espace de noms, ces objets ont un lien interne.

En comprenant ces concepts, vous pouvez gérer efficacement les données membres statiques en C et éviter les erreurs liées aux références non 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!

Déclaration:
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