Maison >développement back-end >C++ >Quel pointeur C Smart dois-je choisir ?

Quel pointeur C Smart dois-je choisir ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-02 17:10:12203parcourir

Which C   Smart Pointer Should I Choose?

Implémentations disponibles du pointeur intelligent C et leurs comparaisons

C 03

  • std::auto_ptr: Obsolète dans les futures normes C. Collecte des ordures limitée, complications de propriété et impossibilité d'utilisation dans les conteneurs STL.
  • std::auto_ptr_ref: Pas un véritable pointeur intelligent ; utilisé conjointement avec std::auto_ptr pour permettre la copie et l'affectation.

C 11

  • std::unique_ptr: Remplace std::auto_ptr. Corrige les faiblesses de std::auto_ptr, permettant de travailler avec des tableaux, la protection des valeurs lvalue et l'utilisation dans des conteneurs STL.
  • std::shared_ptr: Pointeur intelligent avec référence. Prend en charge l'alias et l'arithmétique du pointeur.
  • std::weak_ptr: Référence non propriétaire à un objet appartenant à un std::shared_ptr. Empêche les décomptes de références cycliques indéfinis.

Boost

  • boost::shared_ptr: Pointeur intelligent partagé populaire avec comptage de références. Hautes performances et polyvalence.
  • boost::weak_ptr: Référence non propriétaire à un boost::shared_ptr.
  • boost::scoped_ptr: Alternative simple au pointeur intelligent pour boost::shared_ptr avec moins surcharge.
  • boost::intrusive_ptr: Pointeur intelligent personnalisé pour créer vos propres classes compatibles avec les pointeurs intelligents.
  • boost::shared_array: Partagé pointeur intelligent pour tableaux.
  • boost::scoped_array: Pointeur intelligent non copiable pour les tableaux.

Qt

  • QPointer : Pointeur intelligent faible pour QObject et les classes dérivées. Obsolète.
  • QSharedDataPointer : Pointeur intelligent puissant comparable à boost::intrusive_ptr, avec sécurité des threads.
  • QExplicitlySharedDataPointer : Version 2.0 de QSharedDataPointer avec amélioration contrôle sur détachement.
  • QSharedPointer : Pointeur intelligent partageable avec comptage de références atomiques, thread-safe.
  • QWeakPointer : Référence non propriétaire à un QSharedPointer.
  • QScopedPointer : Pointeur intelligent à propriétaire unique basé sur boost::scoped_ptr, adapté au code et à la compatibilité sans 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