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...
Partager