Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Quand Utiliser des Références vs des Pointeurs Intelligents vs des Pointeurs Bruts | Références
Pointeurs Intelligents C++
course content

Contenu du cours

Pointeurs Intelligents C++

Pointeurs Intelligents C++

1. Introduction aux Pointeurs Intelligents
2. Pointeurs Uniques
3. Pointeurs Partagés
4. Pointeurs Faibles
5. Références
6. Sujets Avancés

book
Quand Utiliser des Références vs des Pointeurs Intelligents vs des Pointeurs Bruts

Offre plusieurs outils pour la gestion de la mémoire, y compris les références, les pointeurs intelligents et les pointeurs bruts. Pour écrire un code sûr et efficace, il est important de comprendre les scénarios spécifiques où chacun de ces outils peut surpasser les autres.

Quand utiliser les références ?

En règle générale, il est conseillé de toujours préférer les références aux pointeurs, car elles sont plus sûres et plus faciles à utiliser. Cela dit, voici quelques cas d'utilisation spécifiques des références :

  • Vous souhaitez une syntaxe plus propre et plus lisible. Les références n'ont pas besoin de déréférencement et sont plus faciles à gérer.

  • Vous souhaitez imposer une non-nullabilité dans une certaine mesure. Les références ne peuvent pas être explicitement définies sur NULL.

  • Vous voulez passer une variable locale à une fonction sans faire de copies. Les références ne sont que des alias de l'objet original.

Quand utiliser des pointeurs intelligents ?

La règle d'or est d'éviter les pointeurs (bruts et intelligents) jusqu'à ce que vous ne puissiez pas. Cela est dû au fait que les pointeurs sont plus difficiles à gérer, et de petites erreurs peuvent entraîner des problèmes comme des fuites de mémoire et des pointeurs pendants. Cela dit, voici quelques scénarios où l'utilisation de pointeurs est le bon choix :

  • Vous souhaitez gérer la propriété des objets alloués dynamiquement. Les pointeurs intelligents excellent dans ce domaine en automatisant le nettoyage des ressources, même en cas d'exceptions.

  • Vous souhaitez maintenir une propriété partagée d'une ressource dynamique. Dans une telle situation, les pointeurs partagés sont le candidat idéal car ils effectuent un comptage de références pour gérer la durée de vie des objets partagés.

  • Vous souhaitez imposer une propriété exclusive d'une ressource dynamique, de sorte qu'aucun autre pointeur ne puisse y accéder. Ce cas d'utilisation peut être satisfait en utilisant un pointeur unique.

Quand utiliser des pointeurs bruts ?

Les pointeurs bruts ne doivent être envisagés que lorsque les références et les pointeurs intelligents ne sont pas réalisables. La raison en est que les pointeurs bruts n'offrent aucune sécurité mémoire, et sont l'une des principales raisons pour lesquelles les programmes plantent. Cela dit, voici quelques cas d'utilisation justifiables pour les pointeurs bruts :

  • Vous interfacez avec des bibliothèques de style C. Étant donné que C ne prend pas en charge les pointeurs intelligents, vous pouvez être obligé d'utiliser des pointeurs bruts.

  • Vous écrivez du code critique pour la performance où la surcharge des pointeurs intelligents est une préoccupation. Par exemple, vous pouvez construire une application embarquée intensive qui doit fonctionner dans un environnement à ressources limitées.

  • Vous travaillez avec du code hérité qui précède l'introduction des pointeurs intelligents. Dans de tels cas, l'utilisation de pointeurs bruts peut être votre seule option.

Lors de l'écriture de code C++, quel devrait être votre premier choix entre les références, les pointeurs intelligents et les références ?

Lors de l'écriture de code C++, quel devrait être votre premier choix entre les références, les pointeurs intelligents et les références ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 3
We're sorry to hear that something went wrong. What happened?
some-alt