|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : novembre 2005 Messages : 4 ![]() |
Bonjour tout le monde,
Si il y avait un degré 0 en C++, je pense que je servirais d'origine J'ai une question plutôt bête au sujet des pointeurs et des paramètres de fonctions. Dans cet article (http://fr.wikibooks.org/wiki/Program.../Les_pointeurs) ils parlent de passage de paramètre par pointeur et de passage de paramètre par référence. 1ere question : y a t il une véritable différence entre ces 2 méthodes ? Dans cet article, ils disent que le passage par référence est privilégié. Ce qui me fait croire que les méthodes sont identiques. Malgré tout, dans tout les exemples que je vois sur le net c'est à 95% le passage par pointeur qui est utilsé, et dans le code que je lis dans ma boite, c'est que du passage par référence ?! Toujours dans le même esprit, concernant la modification de variable je voulais savoir qu'elle est la "bonne" méthode : 1. B* ConvertAToB(const A& a); 2. B& ConvertAToB(const A& a); 3. void ConvertAToB(const A& a, B& b); 4. ... et toutes les variantes avec passage par référence/pointeur Merci par avance. Tim |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() |
un ptit tour du côté de la
t'apporteras sans doute pas mal de réponses:comme : Quand utiliser des références et quand utiliser des pointeurs
__________________
Linux > * |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : novembre 2005 Messages : 4 ![]() |
Cool, j'avais pas vu
Bon, j'en conclue qu'il vaut mieux utiliser les références. Mais alors pourquoi tout les exemples n'utilise t il pas les références ?! |
|
|
00
|
|
|
#4 |
![]() ![]() |
Va faire un tableau de référence ! Ce n'est pas possible
__________________
"Never use brute force in fighting an exponential." (Andrei Alexandrescu) Mes articles dont Conseils divers sur le C++ Une très bonne doc sur la STL (en) Why linux is better (fr) |
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() |
En fait, dès qu'il est question d'allocation dynamique (et de new, donc), il devient nécessaire d'utiliser des pointeurs.
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant. "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?" Apparently everyone. -- Raymond Chen. Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen. |
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() Mathias GaunardIngénieur développement logiciels Inscription : décembre 2003 Messages : 3 550 ![]() |
Du beau code C++ n'utilise jamais de pointeurs à part dans des détails d'implémentation bas niveau, et dans quelques cas particuliers.
Utilise les références. C'est plus sûr, la syntaxe et plus légère et ça binde même sur les temporaires, et ça propage mieux const.
__________________
Boost ftw |
|
|
00
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() |
N'empêche, si je suis un jour prof et que je vois un élève faire ceci ou un truc similaire, il va m'entendre :
Code avec références! :
UneClasse & obj = *(new UneClasse()); Et en quoi exactement une référence propage-t-elle "mieux" const qu'un pointeur?
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant. "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?" Apparently everyone. -- Raymond Chen. Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen. |
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : février 2006 Messages : 2 152 ![]() |
Les pointeurs sont quand même obligatoire dans pas mal de cas. L'implémentation du pattern stratégie en est un exemple. Tout ce que tu ne connais pas à l'avance et qui est susceptible de changer. Car une référence est fixe.
|
|
|
00
|
|
|
#9 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 738 ![]() |
|
|
|
00
|
|
|
#10 | |
|
Expert Confirmé Sénior
![]() Mathias GaunardIngénieur développement logiciels Inscription : décembre 2003 Messages : 3 550 ![]() |
Citation:
Quand tu as un pointeur comme variable membre par exemple ça peut poser problème.
__________________
Boost ftw |
|
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé Sénior
![]() |
Si c'est de ça que tu parles, ça compile sans warning ni erreur sous gcc 3.4.2 et sous Visual 2005:
Code C++ :
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant. "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?" Apparently everyone. -- Raymond Chen. Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen. |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com