Maison > développement back-end > C++ > Les constructeurs C peuvent-ils être chaînés, et si oui, comment ?

Les constructeurs C peuvent-ils être chaînés, et si oui, comment ?

Mary-Kate Olsen
Libérer: 2024-12-21 02:58:13
original
175 Les gens l'ont consulté

Can C   Constructors Be Chained, and If So, How?

Le chaînage de constructeurs peut-il être effectué en C ?

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 ?

C 11 et versions ultérieures

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) {}
};
Copier après la connexion

C 03 : Une approche différente

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)
};
Copier après la connexion

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) {}
Copier après la connexion

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!

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