66 votes

Qu'est-ce que l'héritage du constructeur?

En C ++ 11, qu'entend-on par héritage du constructeur? Si c'est ce que je pense qu'il est (le constructeur de la classe de base est inclus dans la portée de la classe dérivée), quelles sont ses implications sur mon code? Quelles sont les applications d'une telle fonctionnalité?

84voto

Andrew Tomazos Points 18711

Héritant des Constructeurs signifie simplement que. Une classe dérivée peut implicitement hériter des constructeurs de sa classe de base(es).

La syntaxe est comme suit:

struct B
{
    B(int); // normal constructor 1
    B(string); // normal constructor 2
};

struct D : B
{
    using B::B; // inherit constructors from B
};

Alors maintenant, D a la suite de constructeurs définis implicitement:

D::D(int); // inherited
D::D(string); // inherited

Ds membres sont par défaut construit par ces hérité des constructeurs.

C'est comme si les constructeurs ont été définis comme suit:

D::D(int x) : B(x) {}
D::D(string s) : B(s) {}

La fonctionnalité n'est pas quelque chose de spécial. C'est juste une abréviation pour épargner de la saisie du code réutilisable.

Voici les détails techniques:

12.9 Hériter Des Constructeurs

1) Un aide-déclaration que le nom d'un constructeur déclare implicitement un ensemble d'hériter des constructeurs. Le candidat de l'ensemble de l'héritage les constructeurs de la classe X est nommée dans l'aide-déclaration se compose de réelles constructeurs et théorique des constructeurs qui sont le résultat de la la transformation de la souffrance paramètres comme suit:

  • tous les non-modèle constructeurs de X, et
  • pour chaque modèle, le constructeur de X qui a au moins un paramètre avec un argument par défaut, l'ensemble des constructeurs les résultats de l'exclusion d'un bouton de sélection de paramètre de spécification et de successivement en omettant les paramètres avec un argument par défaut à partir de la fin le paramètre de type de liste, et
  • tous les constructeur modèles de X, et
  • pour chaque constructeur modèle de X qui a au moins un paramètre avec un argument par défaut, l'ensemble du constructeur modèles de résultats de l'exclusion d'un bouton de sélection de paramètre de spécification et de successivement en omettant de paramètres avec un argument par défaut à partir de la fin de la paramètre de type liste

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X