En C#, la possibilité d'appeler des constructeurs dans un ordre spécifique est une pratique courante. En tant que développeur C# cherchant à reproduire cette fonctionnalité en C, la question se pose : peut-elle être obtenue grâce au chaînage de constructeurs ?
Réjouissez-vous ! C 11 introduit une fonctionnalité connue sous le nom de constructeurs délégués qui imite le chaînage des constructeurs vu en C#. Voici comment cela s'écrit :
class Foo { public: Foo(char x, int y) {} Foo(int y) : Foo('a', y) {} };
Malgré l'absence de chaînage direct des constructeurs en C 03, deux solutions de contournement existent :
Paramètres par défaut : Combinez les constructeurs en utilisant la valeur par défaut paramètres.
class Foo { public: Foo(char x, int y=0); // Combines two constructors (char) and (char, int) };
Méthode d'initialisation : Utiliser une méthode d'initialisation partagée.
class Foo { public: Foo(char x); Foo(char x, int y); private: void init(char x, int y); }; Foo::Foo(char x) : init(x, int(x) + 7) {} Foo::Foo(char x, int y) : init(x, y) {} void Foo::init(char x, int y) {}
En conclusion, C 11 permet un véritable chaînage de constructeurs, tandis que C 03 propose des solutions de contournement. comme les paramètres par défaut et les méthodes d'initialisation pour obtenir des fonctionnalités similaires.
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!