Maison >développement back-end >C++ >Le C prend-il en charge le chaînage de constructeurs et comment se compare-t-il au C# ?
En tant que développeur C#, vous connaissez peut-être la possibilité d'appeler d'autres constructeurs depuis un constructeur. En C#, cela s’appelle le chaînage de constructeurs. Existe-t-il une fonctionnalité similaire en C ?
Dans C 11 et les versions ultérieures, le chaînage des constructeurs est pris en charge via la délégation des constructeurs. La syntaxe est légèrement différente de C# :
class Foo { public: Foo(char x, int y) {} Foo(int y) : Foo('a', y) {} };
Dans cet exemple, le constructeur Foo(int y) délègue au constructeur Foo(char x, int y) avec x défini sur 'a'.
Malheureusement, le chaînage des constructeurs n'est pas directement pris en charge dans C 03. Cependant, il existe deux options principales pour simuler ce comportement :
1. Paramètres par défaut :
Vous pouvez combiner plusieurs constructeurs en fournissant des valeurs par défaut pour certains paramètres :
class Foo { public: Foo(char x, int y = 0); // Combines constructors Foo(char) and Foo(char, int) };
2. Méthode d'initialisation :
Extraire le code commun dans une méthode privé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) { // Shared initialization code }
Bien que ces techniques ne fournissent pas de véritable chaînage de constructeurs, elles permettent 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!