Initialisation statique en C : une alternative aux constructeurs statiques
En C, l'initialisation des membres de données statiques privées peut poser un défi en raison du manque de constructeurs statiques. Cependant, il existe une solution élégante qui reflète les fonctionnalités des constructeurs statiques dans d'autres langages.
Utiliser une classe séparée
Pour simuler l'initialisation statique, créez une classe ordinaire distincte pour contenir les données statiques et déclarer une instance statique de cette classe dans la classe qui l'exige. Par exemple :
// StaticStuff class holds static data class StaticStuff { std::vector<char> letters_; public: // Constructor initializes data StaticStuff() { for (char c = 'a'; c <= 'z'; c++) letters_.push_back(c); } // Provide access to static data std::vector<char>& letters() { return letters_; } }; // Class that uses static data class C { // Static instance of StaticStuff (initialized once) static StaticStuff staticStuff; };
Dans cet exemple, StaticStuff contient les données statiques letter_ et son constructeur l'initialise lors de la première instanciation. L'instance statique staticStuff est déclarée en C, permettant d'accéder aux données statiques depuis la classe C.
Avantages
Cette approche offre plusieurs avantages :
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!