OVH Cloud OVH Cloud

type* ou *type ?

36 réponses
Avatar
Zouplaz
Bonjour, excusez ma pollution mais j'ai récemment décidé d'écrire
maClasse* monPtr au lieu du contraire à savoir maClasse *monPtr.

J'ai cru lire quelque part que c'était la deuxième forme qui était la
bonne, quelqu'un peut confirmer ?

Merci

10 réponses

1 2 3 4
Avatar
Zouplaz
Le titre de mon post ne veut rien dire, excusez-moi !
Avatar
Jean-Marc Bourguet
Zouplaz writes:

Bonjour, excusez ma pollution mais j'ai récemment décidé d'écrire
maClasse* monPtr au lieu du contraire à savoir maClasse *monPtr.

J'ai cru lire quelque part que c'était la deuxième forme qui était la
bonne, quelqu'un peut confirmer ?


La premiere correspond mieux a la maniere dont les gens pensent, la
seconde a la syntaxe du C++.

J'ai l'impression que la premiere est plus repandue en C++, la seconde
en C.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Jean-Marc Molina
Bonjour,

maClasse* monPtr au lieu du contraire à savoir maClasse *monPtr.


Aucune différence d'un point de vue sémantique, les 2 sont des pointeurs.
Tu pourrais aussi écrire : maClasse * monPtr
Si tu considères que le pointeur fait parti du type écris maClasse*, si tu
privilégies la variable qui est un pointeur, *monPtr
D'où l'idée d'écrire maClasse * monPtr. Le parfait équilibre :)

JM

--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)

Avatar
Philippe Guglielmetti
en C++ on écrit
boost:shared_ptr<maClass> monPtr ;
parce qu'on HAIT les pointeurs.
--
Philippe Guglielmetti - www.dynabits.com
Avatar
Philippe Guglielmetti
en C++ on écrit
boost:shared_ptr<maClass> monPtr ;
parce qu'on HAIT les pointeurs.
--
Philippe Guglielmetti - www.dynabits.com
Avatar
Zouplaz
Philippe Guglielmetti - :

en C++ on écrit
boost:shared_ptr<maClass> monPtr ;
parce qu'on HAIT les pointeurs.


Oui mais moi je ne sais programmer qu'AVEC des pointeurs ;-)

Avatar
Anthony Fleury
Bonjour, excusez ma pollution mais j'ai récemment décidé d'écrire
maClasse* monPtr au lieu du contraire à savoir maClasse *monPtr.

J'ai cru lire quelque part que c'était la deuxième forme qui était la
bonne, quelqu'un peut confirmer ?

Merci


En fait, c'est une histoire de goût vu que la place de * n'importe en rien
au compilateur.
Par contre (en fait, surtout en C) pour ma part j'écris plutôt le deuxième.
En effet si tu fais ca :

maClasse* ptr1, ptr2;

en mettant l'étoile acollée à maClasse, tu pourrais croire que les deux sont
des pointeurs, alors que le deuxième n'en sera pas.
Je mets donc maClasse *ptr1, *ptr2; pour bien montrer que * ne fait pas
partie du type dans la déclaration.

Anthony
--
"On est bien sûr de soi quand on est grand, avec notre savoir, notre
moral, tous ces principes auxquels on tient tant.
Mais c'est souvent trop tard que l'on comprend, que le bonheur
était simple comme un jeu d'enfant." -- Sinsemilia

Avatar
Philippe Guglielmetti
"Zouplaz" a écrit
Oui mais moi je ne sais programmer qu'AVEC des pointeurs ;-)


boost::shared_ptr est un pointeur emballé dans une classe pour t'éviter de
faire des bêtises.
Si tu utilises des références pour le passage de params et les pointeurs
malins comme boost::shared_ptr, tu n'auras plus jamais de problèmes de
pointeurs, et tu sauras enfin ce que C++ apporte au C. Tu pourras aussi
sourire quand un adepte ce Java ou de C# t'expliquera pourquoi c'est
tellement bien d'avoir un ramasse-miettes dans le langage.
--
Philippe Guglielmetti - www.dynabits.com

Avatar
Jean-Marc Bourguet
"Philippe Guglielmetti" writes:

"Zouplaz" a écrit
Oui mais moi je ne sais programmer qu'AVEC des pointeurs ;-)


boost::shared_ptr est un pointeur emballé dans une classe pour
t'éviter de faire des bêtises.


boost::shared_ptr est un pointeur intelligent qui t'evite de devoir
implementer un comptage de reference si l'analyse montre que c'est une
technique utilisable pour gerer la duree de vie de tes objets. La
majorite de mes pointeurs sont dans des structures en graphes avec des
cycles, donc pas utilisable, ou renvoye par des API existantes et que
j'ai pas a modifie -- a nouveau pas utilisable.

Si tu utilises des références pour le passage de params et les
pointeurs malins comme boost::shared_ptr, tu n'auras plus jamais de
problèmes de pointeurs,


Il y a des gens qui pourraient croire que tu est serieux.


et tu sauras enfin ce que C++ apporte au C. Tu pourras aussi sourire
quand un adepte ce Java ou de C# t'expliquera pourquoi c'est
tellement bien d'avoir un ramasse-miettes dans le langage.


Ca regle au moins le probleme de la circularite.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org


Avatar
Serge Paccalin
Le mercredi 29 octobre 2003 à 08:33, Zouplaz a écrit dans
fr.comp.lang.c++ :

Bonjour, excusez ma pollution mais j'ai récemment décidé d'écrire
maClasse* monPtr au lieu du contraire à savoir maClasse *monPtr.

J'ai cru lire quelque part que c'était la deuxième forme qui était la
bonne, quelqu'un peut confirmer ?

Merci


La deuxième est plus répandue à cause du « piège » suivant :

type_t* a, b;

On a l'impression, à première vue, que a et b sont tous les deux de type
type_t*, ce qui n'est pas vrai.

Avec :
type_t *a, b;

c'est légèrement moins trompeur.

--
___________ 2003-10-29 11:50:03
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763

1 2 3 4