C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

parametre de fonction const

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Philippe Mesmeur
Guest





PostPosted: Thu Feb 03, 2005 11:33 pm    Post subject: parametre de fonction const Reply with quote



J'ai eu une longue discussion hier au sujet des parametres de fonction
const.

La personne etait pour mettre "const" devant TOUS les parametres ne devant
pas etre modifies.

A mon avis, il faut le faire que SI le parametre est un pointeur ou une
référence.

int fct1(const int* i);
int fct2(const int& i);

La discussion tournait autours d'une utilisation du const comme:
int fct3(const int i);

comme un argument est passé par copie à une fonction, meme si à la sortie la
copie à été modifiée, il n'en sera rien pour la valeur initiale.

   Je pense donc que le const n'a pas d'interet.

D'autres disent que le fait de mettre un const empeche de modifier la valeur
du parametre dans le code de la fonction (ce qui n'est pas faut) et qu'il
faut mettre const des que possible (c'est à dire tres souvent).

Que pensez vous de tout ça?
Connaissez vous de bonne pages www qui traitent du sujet.

Merci d'avance pour la réponse

Philippe
Back to top
Ivan Vecerina
Guest





PostPosted: Fri Feb 04, 2005 6:07 am    Post subject: Re: parametre de fonction const Reply with quote



"Philippe Mesmeur" <philippe.mesmeur (AT) noos (DOT) fr> wrote

Quote:
J'ai eu une longue discussion hier au sujet des parametres de fonction
const.

La personne etait pour mettre "const" devant TOUS les parametres ne devant
pas etre modifies.

A mon avis, il faut le faire que SI le parametre est un pointeur ou une
référence.

int fct1(const int* i);
int fct2(const int& i);

La discussion tournait autours d'une utilisation du const comme:
int fct3(const int i);

comme un argument est passé par copie à une fonction, meme si à la sortie
la
copie à été modifiée, il n'en sera rien pour la valeur initiale.

Je pense donc que le const n'a pas d'interet.

Ce const n'a clairement aucun intérêt dans la déclaration simple de
la fonction. Le fait que la fonction modifie ou non son paramètre
reçu par copie ne regarde en rien l'appelant.
Il a cependant sa place dans l'implémentation de celle-ci.

Quote:
D'autres disent que le fait de mettre un const empeche de modifier la
valeur
du parametre dans le code de la fonction (ce qui n'est pas faut) et qu'il
faut mettre const des que possible (c'est à dire tres souvent).
Qu'il s'agisse de variables locales ou de paramètres reçus par copie,

'const' a de sérieux avantages pour la maintenance et la fiabilité
du code (voire potentiellement en terme de performance).
Dans les deux cas, donc, il n'est jamais mauvais de l'ajouter
const lorsque c'est possible.

Quote:
Que pensez vous de tout ça?

La chose qu'il faut comprendre, c'est qu'en C++ les deux déclarations
suivantes sont identiques:
void f(int i);
void f(int const i);
Techniquement, le const de 'top-niveau' d'un paramètre par copie
ne fait pas partie de la signature de la fonction.

La bonne approche est donc la suivante:
Lors d'une déclaration simple/forward (fichier .h en général),
n'indiquer que la signature de la fonction:
void f(int i);
Là où la fonction est implémentée, ajouter le const lorsque
c'est possible ou judicieux:
void f(int const i)
{
...implémentation...
}


Quote:
Connaissez vous de bonne pages www qui traitent du sujet.
Pas vraiment, juste maintes questions similaires sur clc++ ...



Salutations,
Ivan
--
http://ivan.vecerina.com/contact/?subject=NG_POST <- email contact form



Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.