Maison > développement back-end > C++ > Comment implémenter des blocs de code statiques en C sans utiliser de classes ?

Comment implémenter des blocs de code statiques en C sans utiliser de classes ?

DDD
Libérer: 2024-10-26 07:59:03
original
280 Les gens l'ont consulté

How to Implement Static Code Blocks in C   Without Using Classes?

Blocs de code statiques en C : une approche alternative en dehors des classes

Bien que C ne prenne pas directement en charge les blocs de code statiques au sein des classes, une solution de contournement consiste à utiliser des blocs de code statiques à l'extérieur cours. Cette approche permet l'exécution de code lors du chargement de la classe ou lorsque la DLL contenant est chargée.

Option 1 : Initialisation pendant le chargement du processus/chargement de la DLL

Pour ce faire, vous pouvez créer un fichier statique block au niveau de l’unité de traduction, généralement dans le fichier d’implémentation de votre classe. Par exemple :

<code class="cpp">static_block {
    // Here you can perform initialization code
    std::cout << "Hello static block world!\n";
}</code>
Copier après la connexion

En utilisant static_block comme indiqué ci-dessus, le code ci-joint s'exécutera avant la fonction main().

Option 2 : Initialisation pendant l'instanciation de première classe

Pour cette option, considérez la structure de classe suivante :

<code class="cpp">class StaticInitialized {
public:
    static bool staticsInitialized = false;
    virtual void initializeStatics();

    StaticInitialized() {
        if (!staticsInitialized) {
            initializeStatics();
            staticsInitialized = true;
        }
    }
};

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

protected:
    void initializeStatics() {
        // Here you can perform initialization code specific to MyClass
        field1 = 42;
        field2 = 100;
    }
};</code>
Copier après la connexion

Dans cet exemple, la fonction initializeStatics() est virtuelle et peut être remplacée dans les classes dérivées pour une logique d'initialisation spécifique. L'indicateur StaticsInitialized garantit que le code d'initialisation n'est exécuté qu'une seule fois avant la création d'une instance de la classe.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal