Maison  >  Article  >  développement back-end  >  La bibliothèque standard C peut-elle être étendue par héritage ?

La bibliothèque standard C peut-elle être étendue par héritage ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-02 12:13:02106parcourir

Can the C   Standard Library Be Extended Through Inheritance?

Extension de la bibliothèque standard par héritage

La croyance selon laquelle la bibliothèque standard C n'est généralement pas destinée à être étendue par héritage est largement répandue . Cependant, après un examen plus approfondi, il devient évident que certains aspects de la bibliothèque ont effectivement été conçus à cet effet.

Points d'extension prévus dans la bibliothèque standard

Un de ces composants est la classe std::exception. Il est explicitement destiné à être hérité, permettant la création de types d'exceptions personnalisés. Ce faisant, certaines directives doivent être prises en compte :

  • Méthodes virtuelles : Les classes destinées à l'héritage doivent avoir des méthodes virtuelles, que possède std::exception.
  • Déclarations d'ami : Des déclarations d'ami excessives peuvent indiquer des problèmes d'encapsulation, ce qui suggère un héritage défavorable.
  • Modèles : Les modèles offrent une flexibilité grâce à la spécialisation, réduisant souvent le besoin d'héritage.
  • Mécanismes de politique : L'héritage de classes dotées de mécanismes basés sur des politiques (par exemple, std::char_traits) n'est généralement pas recommandé.

Adhérence de l'interface lors de l'extension

En tant que bonne pratique, lors de l'héritage de classes de bibliothèque standard, il est important de respecter l'interface définie dans la norme ISO. Cela signifie que, par exemple, la fonction membre what() d'une classe d'exception héritée doit renvoyer une chaîne de texte étroit (NTBS), garantissant la compatibilité avec les fonctions attendant une exception std::exception. Bien qu'un programme utilisant une classe d'exception avec une fonction what() non conforme aux normes puisse techniquement encore être compilé, il s'écarte de l'objectif prévu et introduit des problèmes de compatibilité potentiels.

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