Différences entre les versions de « Programmation C++/Les pointeurs »

→‎Pointeur constant et pointeur vers valeur constante : Ajout de 'char const *' et explications
(→‎Pointeur constant et pointeur vers valeur constante : Ajout de 'char const *' et explications)
*msg = 'E'; // <- Interdit, la valeur pointée ne peut être modifiée
 
==== Position du mot clé <code>const</code> ====
Une méthode simple existe pour déterminer si c'est la valeur pointée ou le pointeur lui-même qui est constant. Elle est apparue il y a plus de 10 ans et a été promue par Dan Sacks, sans succès malheureusement. Cette méthode se résume en une seule phrase :
"<code>const</code> s'applique toujours à ce qui le précède".
Par conséquent, une déclaration ne commencera jamais par <code>const</code> qui ne serait précédé de rien et qui ne pourrait donc s'appliquer à rien. En effet, les deux déclarations suivantes sont strictement équivalentes en C++ :
const char * msg; // déclaration habituelle
char const * msg; // déclaration Sacks
Cette méthode peut s'avérer précieuse dans le cas de déclarations plus complexes :
int const ** const *ptr; // ptr est un pointeur vers un pointeur constant de pointeur d'entier constant : *ptr et ***ptr ne peuvent être modifiés
Ce changement n'a jamais été intégré dans les compilateurs, qui continuent à reporter les types comme <code>const char *</code>. Cette idée brillante n'a aucun inconvénient et n'a jamais été contredite par personne faisant autorité en matière de C++. Mais elle n'a jamais été intégrée dans les outils et manuels, juste pour ne pas changer les habitudes.
 
[[Catégorie:Programmation C++ (livre)]]
19

modifications