Puis-je tirer parti du chaînage de constructeurs en C ?
Le chaînage de constructeurs, un concept familier aux développeurs C#, permet l'exécution d'un constructeur à partir de un autre. Cela fournit un moyen efficace d'initialiser des objets dans une classe parent et ses classes dérivées.
C 11 et au-delà : chaînage de constructeurs
Dans C 11 et versions ultérieures, le constructeur le chaînage est pris en charge via la délégation de constructeurs. La syntaxe s'écarte légèrement de C# :
class Foo { public: Foo(char x, int y) {} Foo(int y) : Foo('a', y) {} };
Ce code définit deux constructeurs : un qui prend (char x, int y) et un autre qui prend (int y). Le deuxième constructeur appelle le premier constructeur en utilisant le pointeur this pour initialiser x à 'a'.
C 03 : Simulation de constructeur
Malheureusement, C 03 ne prend pas en charge nativement chaînage des constructeurs. Cependant, deux méthodes peuvent simuler son effet :
class Foo { public: Foo(char x, int y = 0); // This combines (char) and (char, int) constructors. };
class Foo { public: Foo(char x); Foo(char x, int y); private: void init(char x, int y); }; Foo::Foo(char x) : Foo(x, int(x) + 7) {} // Calls init(x, int(x) + 7). Foo::Foo(char x, int y) : Foo(x, y) {} // Calls init(x, y). void Foo::init(char x, int y) {}
En référençant la FAQ C pour plus de conseils, vous pouvez simuler efficacement le chaînage de constructeurs en C 03 à l'aide de ces méthodes.
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!