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

Comment initialiser des membres de données statiques privées en C sans constructeurs statiques ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-10 18:06:02435parcourir

How to Initialize Private Static Data Members in C   Without Static Constructors?

Initialisation de membres de données statiques privées : alternative aux constructeurs statiques

Il est courant de rencontrer un besoin de membres de données statiques privées dans une classe , similaire au concept Java ou C# des constructeurs statiques. Cependant, C ne fournit pas de mécanisme explicite pour les constructeurs statiques.

Pour résoudre ce problème, C propose une approche alternative. Au lieu de déclarer des données membres statiques dans la classe, créez une classe ordinaire distincte pour contenir les données statiques. Déclarez une instance statique de cette classe ordinaire au sein de la classe souhaitée.

Par exemple :

class StaticStuff
{
    std::vector<char> letters_;

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

    // Provide a method to access letters_
};

class Elsewhere
{
    static StaticStuff staticStuff; // Static instance runs once
};

En utilisant cette technique, les données statiques sont initialisées une fois lors de l'exécution du programme et sont accessibles tout au long de la durée de vie du programme. Cette approche constitue une alternative viable aux constructeurs statiques en C .

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