Maison > développement back-end > C++ > Comment initialiser des membres de données statiques en C sans constructeur statique ?

Comment initialiser des membres de données statiques en C sans constructeur statique ?

Linda Hamilton
Libérer: 2024-11-09 01:17:02
original
718 Les gens l'ont consulté

How Can You Initialize Static Data Members in C   Without a Static Constructor?

Constructeurs statiques en C : initialisation de membres de données statiques

Les membres de données statiques sont des variables déclarées au sein d'une classe qui sont partagées entre toutes les instances de celle-ci. classe. Dans des langages comme Java et C#, il est possible d'utiliser des constructeurs statiques pour initialiser ces membres avant la création d'instances. Cependant, C n'a pas de constructeur statique désigné.

Pour obtenir des fonctionnalités similaires en C , une approche alternative consiste à créer une classe distincte pour les données statiques. Voici comment cela fonctionne :

class StaticStuff {
  // Read-only vector of characters
  std::vector<char> letters_;

public:
  StaticStuff() {
    for (char c = 'a'; c <= 'z'; c++) {
      letters_.push_back(c);
    }
  }

  // Getter method to access letters_
  const std::vector<char>& getLetters() const { return letters_; }
};

class Elsewhere {
  static StaticStuff staticStuff_; // Initialize once
};
Copier après la connexion

Dans cet exemple, StaticStuff contient les lettres membres de données statiques_. Lorsque le programme démarre, le constructeur de StaticStuff s'exécutera une fois, initialisant automatiquement letter_ avec les caractères corrects. Ensuite, les instances d'Elsewhere peuvent accéder à letter_ via l'instance statique de StaticStuff sans avoir besoin de l'initialiser explicitement.

Cette méthode fournit un moyen propre et efficace d'initialiser les membres de données statiques en C sans recourir à des hacks laids ou à des vérifications inutiles. dans les constructeurs d'instances.

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