Maison > développement back-end > C++ > Comment imiter les blocs statiques Java en C : stratégies et considérations d'initialisation

Comment imiter les blocs statiques Java en C : stratégies et considérations d'initialisation

Susan Sarandon
Libérer: 2024-10-27 09:16:03
original
1041 Les gens l'ont consulté

How to Mimic Java Static Blocks in C  : Initialization Strategies and Considerations

Équivalents C aux blocs statiques Java

En Java, les blocs statiques constituent un moyen pratique d'initialiser les membres statiques avant que la classe ne soit instanciée. Cependant, C n'a pas de blocs statiques dans les classes.

Option 1 : Initialisation au chargement du processus

Pour réaliser l'initialisation au chargement du processus, utilisez des variables statiques en dehors de tout classe, également connue sous le nom de « portée de l'unité de traduction ».

<code class="cpp">// translation-unit-scope-static-initialization.cpp
static_block {
    // Code to initialize your static variables
}</code>
Copier après la connexion


Option 2 : Initialisation lors de l'instanciation de classe

Comme C ne permet pas l'initialisation de membres statiques non const, nous avons besoin d’une approche indirecte. Voici une solution de contournement :

<code class="cpp">// static-initialized-via-base-class.cpp
class StaticInitialized {
public:
    static bool staticsInitialized = false;
    virtual void initializeStatics() = 0; 
};
​
class MyClass : private StaticInitialized {
    static int field1;
    static int field2;
​
private:
    void initializeStatics() override {
        // Code to initialize field1 and field2
    }
};</code>
Copier après la connexion


Une mise en garde est que les deux options ne garantissent pas l'ordre d'initialisation, car l'ordre d'initialisation des variables statiques en C n'est pas déterministe.

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 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