Bonjour,
vu que m'as question été passé à la trappe
je fait un nouveau post pour ne pas polluer.
Qu'elle est la différence entre
const A* aa;
et A* const aa;
merci.
Bonjour,
vu que m'as question été passé à la trappe
je fait un nouveau post pour ne pas polluer.
Qu'elle est la différence entre
const A* aa;
et A* const aa;
merci.
L'object A pointe par aa est constant. Il n'est pas modifiable. Le pointeur lui meme peut etre modifie pour pointer sur autre chose.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2const A* aa;
Le pointeur aa est constant. L'adresse qu'il contient ne peut pas etre modifiee. Par contre il n'est pas interdit de modifier la valeur pointee.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2A* const aa;
Donc pour finir
mais avec les references??const int a <=> int const a
mais pourconst int & a <=>int const & a
cela donnerai quoi??int & const a
int & const a n'est à ma connaissance pas accepté par le compilateur. De toute façon, la référence est forcément non-modifiable, donc c'est comme si elles avaient toutes le const après le &...
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.
En fait, le const s'applique toujours sur l'objet juste avant lui... Si jamais il n'y a rien avant, alors on inverse et on le met sur celui après
Exemple :
Ici il n'y a rien avant const, alors celà devient automatiquement
Code : Sélectionner tout - Visualiser dans une fenêtre à part const int a;
Dans ton premier exemple, c'est assez clair aussi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part int const a;
devient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2const A* aa;
L'objet lui même ne peut pas être modifié...
Code : Sélectionner tout - Visualiser dans une fenêtre à part A const * aa;
Et dansle const porte bien sur le pointeur. C'est lui qui ne peut pas être modifié...
Code : Sélectionner tout - Visualiser dans une fenêtre à part A* const aa;
![]()
Alors en theorie ca ne sert a rien :-D.
On utilise parfois l'ecriture
pour creer un pointeur constant. C'est a dire qui possede le meme comportement qu'une reference (objet pointe qui ne peut etre change), a la difference pret qu'on peut initialiser un tel pointeur a NULL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int * const a = var;
Sauf bricolage moche, une reference ne peut pas etre nulle.
En pratique, ca ne compile pas :-D.
(en tout cas avec g++ ca ne compile pas).
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
http://cpp.developpez.com/faq/cpp/?p...har_const_char
??
ben c'est incomplet :![]()
Ouaip on pourrait refaire l'article de la FAQ en piochant dans ce thread
Les exemples c'est toujours plus parlant.
Et les abus de langage avec const ou les soucis de toutes sortes avec const sont frequents... (souvenir d'une reference constante sur un type templete...)
merci tous le monde cela deviens plus claire
vous êtes des chef
Partager