Maison > développement back-end > C++ > le corps du texte

Comment puis-je imiter les blocs statiques Java en C ?

Barbara Streisand
Libérer: 2024-10-27 02:33:30
original
739 Les gens l'ont consulté

How Can I Mimic Java Static Blocks in C  ?

C Idiom for Java Static Blocks

Les blocs statiques Java offrent un moyen pratique d'initialiser les membres statiques d'une classe. C , cependant, ne dispose pas d'un mécanisme de bloc statique explicite au sein des classes. Pour résoudre ce problème, nous présentons une solution équivalente pour les deux scénarios :


  1. Initialisation lors de la charge du processus

  2. Initialisation lors de l'instanciation de classe< /li>

Option 1 : Initialisation lors de la charge du processus

C permet des blocs statiques en dehors des classes, au niveau de l'unité de traduction portée. À l'aide d'une technique de macro, vous pouvez définir de tels blocs comme suit :

<code class="cpp">static_block {
    // Initialization code
}</code>
Copier après la connexion

Option 2 : Initialisation lors de l'instanciation de classe

Pour ce scénario, vous pouvez réaliser Initialisation des membres statiques au sein des classes à l'aide d'une variante du modèle de conception Singleton :

<code class="cpp">class StaticInitialized {
    static bool initialized;
    virtual void initializeStatics();
};

class MyClass : private StaticInitialized {
    static int field1;
    static int field2;

    void initializeStatics() {
        // Initialization code
    }
};</code>
Copier après la connexion

Cette approche utilise un constructeur non statique qui est appelé lors de la première instanciation de la classe, initialisant les membres statiques.

Détails d'implémentation

La solution consiste à définir une variable factice qui est initialisée avec un appel de fonction. Le code du bloc statique est placé dans le corps de cette fonction. Cela évite les conflits avec d’autres blocs statiques. La macro-machinerie utilisée garantit l'unicité de chaque bloc.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!