Bonjour,
est-ce que ça choque quelqu'un si j'écris quelque chose du style :
void MyFunction( const string & defaultParam = "" );
Bonjour,
est-ce que ça choque quelqu'un si j'écris quelque chose du style :
void MyFunction( const string & defaultParam = "" );
Ben non.![]()
super merci, je voulais être sûr !
Euh si. J'aurais préféré
void MyFunction( string const & defaultParam = "" );
On préfère donc TYPE const qui est la règle à const TYPE qui est l'exception.Envoyé par FAQ
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
mais pour le retour des fonctions, c'est bien :
const string & GetXXX() const;
je me trompe ?
string const & getXXX() const, c'est kifkif
Sinon, pour le param par défaut, moi je ferais
void MyFunction( string const & defaultParam = *(string *)0 );
gniarkgniarkgniark
Meunon, c'est ceci bien sur:
void MyFunction( const string & defaultParam = string() );
(meta-x mode-side-discussion-on)
Étrangement, je suis en train d'écrire le contraire dans un article à paraitre sur mon blog. Mon opinion est que la notation qu'on utilise pour les références constantes se doit de suivre celle qu'on utilise pour les pointeurs vers des instances constantes. Hors, X const* p peut être aisément confondu avec X * const p par le néophyte, parce qu'il faut être honnête, ça n'est pas toujours facile pour s'y retrouver. SI, pour rendre le code moins brouillon, on utilise const X* p au lieu de X const* p, alors on utilise aussi const X& r au lieu de X const& r. Un effet de bord est que ça nous permet à nouveau de lire la déclaration de la gauche vers la droite, tout en réintroduisant une sémantique plus intuitive (mais (je l'accorde volontiers) moins formelle) de "type constant" et de "variables constantes". ainsi, const X* const p est une "variable constante de type pointeur vers un type constant". Ce n'est bien évidemment pas la panacée, mais étant donné qu'il est plus difficile de définir ce qu'est un pointeur constant (qu'est-ce qui est constant : la valeur du pointeur ou l'instance pointée ?) qu'une variable constante (la variable, c'est à dire dans ce cas la valeur du pointeur, ne peut pas être modifiée), ça me convient assez bien.
Et puis ça a le mérite d'être cohérent avec les définitions des fonctions/méthodes de la C++SL telles que données dans le texte du standard lui-même, où la notation X const& r n'est pas utilisée.
(meta-x mode-side-discussion-off)
[FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.
Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.
Dans les histoires de styles, on confronte plus souvent des opinions que des faits. Et par conséquent, on est susceptible d'avoir d'interminables débats.
Mais quand même...
Comprendre type fonction() const; est plus naturel si on intègre que le const s'applique à ce qui précède.
Toujours avec la règle du 'précède', je trouve plus naturel de comprendre la différence entre type const * et type * const, que de faire le grand saut entre const type * et type * const.
Mais pour être totalement franc, je pense que de toute façon, dès qu'on introduit un pointeur (c'est moins vrai avec la référence car elle n'est pas modifiable), on introduit du doute (par rapport à ce const, entre autre). Et in fine, je ne pense pas qu'un écriture plutôt que l'autre clarifie vraiment la chose. La meilleur règle est peut être encore ... d'avoir une constance d'écriture dans les projets.
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Hourra !Envoyé par Emmanuel Deloget
A bas la dictature des Type & const !
Et je propose la motion suivante : Sera pendu haut et court, toute personne qui vient pinailler à chaque fois que l'on parle de référence constante "gnagnagna une référence est forcément constante gnagnagna".
![]()
Partager