Maison  >  Article  >  développement back-end  >  Pouvons-nous étendre la bibliothèque standard C via l’héritage ?

Pouvons-nous étendre la bibliothèque standard C via l’héritage ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-05 05:07:02126parcourir

Can We Extend the C   Standard Library Through Inheritance?

Extension de la bibliothèque standard C via l'héritage

La perception commune est que la bibliothèque standard C n'est pas destinée à être étendue via l'héritage. Cependant, l'existence de std::exception remet en question cette notion. Par conséquent, les questions suivantes se posent :

Les classes de bibliothèque standard peuvent-elles être étendues par héritage ?

En dehors de std::exception, il n'est pas clair quelles autres classes de bibliothèque standard sont destinés à l'héritage. Une approche pratique pour déterminer les candidats appropriés est la suivante :

  • Vérifier les méthodes virtuelles : Les classes avec des méthodes virtuelles sont des candidats potentiels pour les classes de base.
  • Évitez les cours avec des déclarations d'ami : Les problèmes d'encapsulation peuvent rendre l'héritage problématique.
  • Considérez les modèles : La personnalisation via des spécialisations peut être préférable à l'héritage pour les modèles.
  • Méfiez-vous des mécanismes basés sur des politiques :Ces mécanismes suggèrent que l'héritage n'est pas conseillé.

Implications de l'héritage des classes de bibliothèque standard

Lors de l'héritage d'une classe de bibliothèque standard comme std::exception, on peut se demander si la sous-classe doit adhérer à l'interface d'origine. Cependant, le « principe de substitution de Liskov » (LSP) suggère que le comportement de la sous-classe doit être cohérent avec celui de la classe de base en ce qui concerne le client.

Par conséquent, il est considéré comme une bonne pratique de assurez-vous que la fonction membre what() de la sous-classe renvoie un pointeur non nul, même si la norme ne l'exige pas explicitement pour les sous-classes de std::exception.

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