const: Est-ce vraiment utile? - C++ - Programmation
Marsh Posté le 20-07-2004 à 22:05:45
déjà qu'en C le const est indispensable, je sais pas comment tu fais. tu dis ne jamais avoir vraiment utilisé const ? c'est une faute grave, la constness est quelque chose de très inmportant, mais c'est vrai qu'avec un compilateur laxatif, ça peut passer inaperçu. Mais en. Mais en partout. Soit parano. Dès que quelque chose est constant, que tu le modifies pas, marque le const. Tous les accesseurs d'un TAD doivent être marqués const. Quand tu passes les objets par référence ou pointeur, c'est essentiel.
Marsh Posté le 20-07-2004 à 22:06:47
C'est justement parce que c'est contraignant que c'est utile.
Les caiplusplusistes sont masochistes.
Marsh Posté le 20-07-2004 à 22:09:43
Taz > faudrait argumenter aussi
Par ex: "const roulaize, const_cast suxxxx"
Marsh Posté le 20-07-2004 à 22:13:33
mais c'est fait. l'absence de const est un problème grave. Sans, tu n'est pas en mesure de garantir l'intégrité d'un objet, il n'y aura personne pour te dire si tu le modifies malgré toi. Et comme tu passes souvent les objets par pointeur/référence, tu risques de bousiller tes paramètres
Marsh Posté le 20-07-2004 à 22:14:36
schnapsmann a écrit : Taz > faudrait argumenter aussi |
Quand tu fais ton TAD, tu définis des observateurs. Traduire un observateur en C++, c'est le marquer comme const. Ce n'est pas un problème de C++.
Marsh Posté le 20-07-2004 à 22:19:08
non mais bon, je veux juste que les gens sachent à quoi s'en tenir, à avoir que le const est une aide à la bonne conception et non une assurance de non mutabilité absolue
Marsh Posté le 20-07-2004 à 22:28:46
Et... une autre question:
Lorsque l'on passe un paramètre par pointeur et que l'on ne veut pas que ce paramètre ne soit modifié (ni l'adresse pointé, ni la valeur de l'objet pointé), il faut simplement faire un: "const type *MonPointeur" ou "const type *const MonPointeur" ou autrement?!
Marsh Posté le 20-07-2004 à 22:30:48
_momone_ a écrit : ni l'adresse pointé, ni la valeur de l'objet pointé |
bon on reprends:
const Foo* ptr
l'objet pointé n'est pas autorisé à être modifié via ptr
Foo const* ptr
ptr pointe toujours sur la même chose
Marsh Posté le 20-07-2004 à 23:09:36
ReplyMarsh Posté le 20-07-2004 à 23:27:18
Merci Taz!!!!
En gros, c'est une interface.
Marsh Posté le 20-07-2004 à 23:30:43
le const n'est pas utile
il est indispensable !
L'utiliser démontre que tu as COMPRIS ce qui arrive à tes objets !
Marsh Posté le 20-07-2004 à 23:52:24
Joel F a écrit : |
ça fait tout de suite moins convaincant
Marsh Posté le 20-07-2004 à 23:56:09
Fokyu gozaymas
Marsh Posté le 21-07-2004 à 00:03:47
Dixit ta signature :
"Le fantôme de ton frère siamois t' écartèle les fesses avec une pierre ponce comme le faisait Attila, pet décomposé !!!! "
Marsh Posté le 21-07-2004 à 09:38:48
Joel F a écrit : L'utiliser démontre que tu as COMPRIS ce qui arrivent à tes objets ! |
C'est mieux, mais c'est pas encore ca!
Marsh Posté le 21-07-2004 à 10:12:02
euh ... le sujet de la proposition etant 'qui', lui meme mis pour 'ce', qui est singulier, arrive prend pas ent donc
Marsh Posté le 21-07-2004 à 10:19:00
ReplyMarsh Posté le 21-07-2004 à 10:28:01
Citation : mais c'est vrai qu'avec un compilateur laxatif |
Citation : de Ace17 |
C'était un jeu de mot je pense
Compilateur laxatif = compilateur a chier
Marsh Posté le 20-07-2004 à 22:01:55
Je programme en C++ depuis un petit bout de temps maintenant et je n'ai jamais vraiment utilisé le mot clef 'const' (à part dans la surcharge de certains opérateurs qui le nécessitent).
j'ai donc décidé de me réécrire un programme en mettant les 'const' là où il faut (surtout pour le passage de paramètres par pointeur ou par référence et pour indiquer qu'une méthode ne doit pas modifier l'objet) et je me rend compte que c'est vraiment plus contraignant qu'utile.
Donc j'aimerais votre avis. Est-ce que vous pensé que l'utilisation est vraiment utile et est-ce que vous-même, vous l'utilisez?