Maison  >  Article  >  développement back-end  >  Pourquoi les constructeurs virtuels sont-ils absents en C ?

Pourquoi les constructeurs virtuels sont-ils absents en C ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-19 09:22:02359parcourir

Why are Virtual Constructors Absent in C  ?

Éviter les constructeurs virtuels en C : aperçus de Bjarne Stroustrup

Bien que la programmation orientée objet utilise couramment des fonctions virtuelles pour activer le polymorphisme, C n'a pas le concept de constructeurs virtuels. Cette particularité a laissé de nombreux développeurs perplexes, les conduisant à la question : Pourquoi cette fonctionnalité est-elle absente en C ?

Pour approfondir le raisonnement derrière cette absence, recherchons la sagesse du créateur de C, Bjarne Stroustrup, qui a écrit l'explication suivante dans la FAQ sur le style et la technique C :

"Un appel virtuel est un mécanisme permettant d'obtenir une fonctionnalité lorsqu'on lui donne des informations partielles sur un objet. Plus précisément, les appels virtuels permettent d'appeler des fonctions même lorsqu'ils ne connaissent que les interfaces. et non le type spécifique de l'objet. Cependant, la création d'un objet nécessite des informations complètes, notamment connaître le type exact d'objet à instancier. Par conséquent, l'appel d'un constructeur ne peut pas être rendu virtuel."

Ce raisonnement logique explique pourquoi. C n'a pas de constructeurs virtuels. Malgré cette limitation, la FAQ de Stroustrup propose également un extrait de code qui offre un moyen alternatif d'obtenir des fonctionnalités similaires sans recourir à des constructeurs virtuels.

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!

Déclaration:
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