"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Quand passer par référence ou par pointeur en C++ : un principe directeur ?

Quand passer par référence ou par pointeur en C++ : un principe directeur ?

Publié le 2024-11-15
Parcourir:380

When to Pass by Reference or Pointer in C  : A Guiding Principle?

Passage par référence ou pointeur en C : un principe directeur

En C, comprendre quand utiliser le passage par référence et quand utiliser des pointeurs est crucial. Cette pratique peut conduire à un code efficace et sans erreur.

Situations générales

  • Passer une std::string à une fonction :

    • foo(std::string*) ou foo(std::string&)?
  • Passer un tr1::shared_ptr à une fonction :

    • foo(tr1::shared_ptr* ptr) ou foo(tr1::shared_ptr& ptr)?

Pointeurs vs références

Le passage par référence offre une cohérence, car chaque objet peut être traité comme une référence. Cependant, le passage par pointeur offre la flexibilité de gérer les nullptrs et les littéraux.

Analyse d'extrait

L'extrait donné :

map> > adjacencyMap;
vector* myFriends = new vector();
myFriends->push_back(string("a"));
myFriends->push_back(string("v"));
myFriends->push_back(string("g"));
adjacencyMap["s"] = shared_ptr >(myFriends);

souligne la nécessité de prendre en compte les propriétés des références et des pointeurs :

  • Les clés de carte utilisent références, garantissant l'efficacité de la mémoire.
  • Le pointeur vectoriel permet une allocation dynamique, facilitant l'ajout de vecteurs.

Règle empirique

En fin de compte, le choix approprié dépend des exigences spécifiques. En tant que principe directeur, considérez :

  • Utiliser les références : Pour une utilisation efficace de la mémoire et lorsque vous avez garanti l'accès à l'objet référencé.
  • Utiliser pointeurs : Lors de la gestion des nullptrs, de l'utilisation de la mémoire dynamique ou lorsque vous devez modifier les références vous-même.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3