Le cast
permet de transformer une constante en non constante
mais avec parfois des risques d'incohérence...:
// bizarre, bizarre #include <iostream.h> main(){ const int i=0; const int *pci=&i; // ok (*(int *)pci)=1; // ok grace au cast cout<<"i="<<i<<"\t &i="<<((int)&i)<<endl <<"*pci="<<*pci<<"\t pci="<<((int)pci)<<endl; // pci==&i // mais i=0 et *pci=1 !! cout<<"*&i="<<(*&i)<<endl; // et *&i!=i !! }donne le résultat:
i=0 &i=2063807312 *pci=1 pci=2063807312 *&i=1
D'après le manuel de référence,
un objet (d'une classe sans constructeur ni destructeur, ce qui est le cas des
types de bases)
const
peut être stocké dans une zone
``read-only'', et la modification
d'une constante peut donc provoquer des erreurs à l'exécution