chaines littérales et const [C++] - C++ - Programmation
Marsh Posté le 10-05-2003 à 21:19:16
ben c'est comme ça... c'est const, mais bon, je connais aucun compilo qui te jetera pour ça
Marsh Posté le 10-05-2003 à 21:31:27
Imagine que ce soit vraiment respecté, tu devrais faire ça ?
Code :
|
(cast de const char* à char*)
Et donc ça serait un petit peu lourd à force
Ne nous plaignons pas !
Marsh Posté le 10-05-2003 à 21:33:51
leneuf22 a écrit : Imagine que ce soit vraiment respecté, tu devrais faire ça ?
|
ça c'est en C
Marsh Posté le 10-05-2003 à 21:48:42
leneuf22 a écrit : Imagine que ce soit vraiment respecté, tu devrais faire ça ?
|
Non je ne trouve pas ça lourd. On n'est pas sensé caster des objets const en non-const, sauf dans le cas de biblios mal fichues. Alors quand ça arrive je prérère mettre un "const_cast", ça montre bien qu'il y a un problème.
Marsh Posté le 10-05-2003 à 22:16:06
++Taz a écrit : ben c'est comme ça... c'est const, mais bon, je connais aucun compilo qui te jetera pour ça |
forte 6 si
Marsh Posté le 11-05-2003 à 00:54:14
++Taz a écrit : de toutes façons tout et n'importe quoi compile alors... |
En C oui. En C++, c'est moins évident.
Marsh Posté le 11-05-2003 à 02:05:59
++Taz a écrit : ben c'est comme ça... c'est const, mais bon, je connais aucun compilo qui te jetera pour ça |
Theoriquement l ecriture de
char *str = "abc" n'est pas valide en C++ (ms valide en C)
le const "devrait" etre mis. Ms les compilos accepte car cette syntaxe n'est pas considérée comme vraiment invalide, simplement dépassée (en gros fodrait songer de nos jours ds un vrai prog a eviter d'ecrire ce genre de chose)
(cf standard C++ Annexe C.1.1.4, pour les kiffeurs)
Marsh Posté le 11-05-2003 à 07:06:17
ReplyMarsh Posté le 12-05-2003 à 17:03:28
Reply
Marsh Posté le 10-05-2003 à 21:16:10
Bonjour,
Un truc que je ne comprends pas, c'est que le bout de code suivant compile:
char *ptr = "coucou";
Le Stroustrup me dit que les chaines littérales sont "const char*". Comment se fait-il que mon compilateur (g++ 3.2.2, VC6) ne bronche pas ? Normalement ne faudrait-il pas utiliser un "const_cast" ?
Si je fais:
char *ptr = "coucou"; // marche aussi avec un Toto*
const char *ptr2 = ptr;
g++ me donne:
invalid conversion from `const char*' to `char*'
Ce que je trouve normal.
Et vous qu'en pensez vous ?