Maison >développement back-end >C++ >Pourquoi les membres de données statiques en C doivent-ils être définis en dehors de la déclaration de classe ?

Pourquoi les membres de données statiques en C doivent-ils être définis en dehors de la déclaration de classe ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-09 12:44:12396parcourir

Why Must Static Data Members in C   Be Defined Outside the Class Declaration?

Perplexe face à la définition externe des membres de données statiques ? Démêler l'énigme

Selon le centre de connaissances C d'IBM, il est impératif de définir des données membres statiques en dehors de la déclaration de classe. Cela soulève la question : pourquoi est-ce nécessaire et quels sont les principes sous-jacents d'allocation de mémoire qui dictent cette règle ?

Pour résoudre ce problème, nous devons approfondir le concept connu sous le nom de règle de définition unique. En C , chaque objet statique au sein d'un programme doit être défini précisément une et une seule fois. Les définitions de classe sont souvent incluses dans les fichiers d'en-tête, qui sont à leur tour incorporés dans plusieurs unités de traduction.

Si la déclaration de l'objet statique dans l'en-tête était également sa définition, plusieurs définitions apparaîtraient à chaque inclusion du fichier d'en-tête. Cela contrevient à la règle d'une définition unique, entraînant une rupture potentielle.

Par conséquent, l'objet statique n'est pas défini dans l'en-tête. Au lieu de cela, une définition externe et singulière est fournie ailleurs dans la base de code.

Théoriquement, le langage pourrait émuler la gestion des fonctions en ligne, permettant de fusionner plusieurs définitions en une seule. Cependant, le langage C n'adopte pas cette approche, nécessitant le respect de la règle de définition externe pour les données membres statiques.

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