Drôle, je viens de répondre à une question sur le C ++ et de parler de pointeurs.
La version courte est que vous n'avez JAMAIS besoin de pointeurs, sauf si 1) la bibliothèque que vous utilisez vous oblige à 2) Vous avez besoin d'une référence nullable.
Si vous avez besoin d'un tableau, d'une liste, d'une chaîne, etc., placez-le simplement sur la pile et utilisez un objet stl. Le renvoi ou le passage d'objets stl sont rapides (fait non vérifié) car ils ont un code interne qui copie un pointeur au lieu d'un objet et ne copie les données que si vous y écrivez. C ++ n'est pas le nouveau C ++ 11, ce qui facilitera la tâche des rédacteurs de bibliothèques.
Votre question pourrait être répondu à cette partie
Si vous utilisez un pointeur, assurez-vous qu'il est dans l'une de ces deux conditions. 1) Vous transmettez une entrée qui peut être nullable. Un exemple est un nom de fichier optionnel. 2) Si vous voulez céder la propriété. Comme si vous passiez ou retourniez le pointeur, il ne vous reste plus aucune copie, ni le pointeur que vous donnez.
ptr=blah; func(ptr); //never use ptr again for here on out.
Mais je n'ai pas utilisé de pointeurs ou de pointeurs intelligents depuis très longtemps et j'ai profilé mon application. Ça va très vite.
NOTE ADDITIONNELLE: Je remarque que j'écris mes propres structures et que je les transmets. Alors, comment puis-je faire cela sans utiliser de pointeurs? Ce n'est pas un conteneur STL, donc passer par réf est lent. Je charge toujours ma liste de données / deques / cartes et autres. Je ne me souviens pas avoir renvoyé d'objets à moins que ce ne soit une sorte de liste / carte. Pas même une ficelle. J'ai regardé le code pour les objets simples et je remarque que je fais quelque chose comme ceci, { MyStruct v; func(v, someinput); ... } void func(MyStruct&v, const D&someinput) { fillV; }
donc je retourne à peu près des objets (plusieurs) ou une pré-allocation / passe dans une référence à remplir (un seul).
Maintenant, si vous écrivez, vous avez votre propre deque, carte, etc. vous devrez utiliser des pointeurs. Mais vous n'en avez pas besoin. Laissons STL et éventuellement stimuler l'inquiétude Vous avez juste besoin d'écrire des données et des solutions. Pas de conteneurs pour les contenir;)
J'espère que vous n'utilisez plus de pointeurs: D. Bonne chance face aux libs qui vous obligent à