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

Comment initialiser des membres de données statiques en C sans utiliser le constructeur d'instance ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-07 20:25:03349parcourir

How to Initialize Static Data Members in C   Without Using the Instance Constructor?

Initialisation statique : un guide complet

Dans la programmation orientée objet, les données membres statiques sont partagées entre toutes les instances d'une classe. Généralement, ils sont initialisés dans le constructeur d'instance. Cependant, que se passe-t-il si vous souhaitez configurer des données membres statiques sans compter sur le constructeur d'instance ?

Pour émuler le comportement des constructeurs statiques, créez une classe distincte pour encapsuler les données statiques. Par exemple, considérons la classe suivante :

class C {
    // read-only, can also be static const
    // should be filled with all characters from 'a' to 'z'
    static std::vector<char> alphabet;
public:
    C() { /* ... */ }
};

Pour y parvenir, définissez les données statiques dans une classe ordinaire distincte :

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

Maintenant, créez une instance statique de cette classe dans la classe d'origine :

class Elsewhere {
    static StaticStuff staticStuff; // constructor runs once, single instance
};

En créant une instance statique de la classe StaticStuff, vous initialisez essentiellement les données membres statiques avant la création de toute instance de la classe Elsewhere, imitant efficacement la fonctionnalité d'un constructeur statique.

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