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 

const ?

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





PostPosted: Tue May 18, 2004 6:08 am    Post subject: const ? Reply with quote



Bonjour je ne comprends pas trés bien à quoi sert "const" dans une
déclaration de fonction de ce genre :

foo(const matrice &m);

la fonction foo prends comme argument une variable de type matrice qu'on
passe par référence, mais le const signifie quoi exactement ? qu'on modifie
la matrice m mais à la fin de la fonction foo, les modifications sont
oubliées ?
C'est equivalent à foo(matrice m) ?

Merci

Gib


Back to top
Alexandre
Guest





PostPosted: Tue May 18, 2004 6:20 am    Post subject: Re: const ? Reply with quote



bonjour,

"BuG" <bug (AT) asrun (DOT) org> a écrit dans le message de
news:c8c9cu$t6s$1 (AT) news-reader3 (DOT) wanadoo.fr...
Quote:
Bonjour je ne comprends pas trés bien à quoi sert "const" dans une
déclaration de fonction de ce genre :

foo(const matrice &m);

la fonction foo prends comme argument une variable de type matrice qu'on
passe par référence, mais le const signifie quoi exactement ? qu'on
modifie
la matrice m mais à la fin de la fonction foo, les modifications sont
oubliées ?
C'est equivalent à foo(matrice m) ?

le const sert à préciser que m ne sera pas modifié. Une modification de m à
l'intérieur de la fonction ne compilera pas. Donc tu t'assures que m ne
changera pas. Ce qui permet d'appeler la fonction avec des instances
constantes. Par exemple :

foo(matrice& m){....} // pas de const mais foo ne modifie pas m

const matrice MC;
foo(MC); // ne compile pas alors que m ne changeant pas dans foo, ce
n'est pas grave

foo(const matrice& m){...}
const matrice MC;
foo(MC); // ici pas de pb

la référence constante n'est pas strictement équivalente à une valeur (const
matrice& != matrice) car il n'y a aucune copie de l'objet passé en paramètre
dans le 1er cas, mais en pratique ça revient au ^même



Back to top
Jean-Marc Bourguet
Guest





PostPosted: Tue May 18, 2004 6:54 pm    Post subject: Re: const ? Reply with quote



"Alexandre" <alex.g (AT) netcourrier (DOT) com> writes:

Quote:
la référence constante n'est pas strictement équivalente à une valeur (const
matrice& != matrice) car il n'y a aucune copie de l'objet passé en paramètre
dans le 1er cas, mais en pratique ça revient au ^même

int global;

void bar() {
global = 42;
}

int foo(int const& x) {
bar();
return x;
}

....
global = 0;
assert(foo(global) == 42);

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
Fabien LE LEZ
Guest





PostPosted: Tue May 18, 2004 8:04 pm    Post subject: Re: const ? Reply with quote

On 18 May 2004 20:54:38 +0200, Jean-Marc Bourguet <jm (AT) bourguet (DOT) org>
wrote:

Quote:
"Alexandre" <alex.g (AT) netcourrier (DOT) com> writes:
dans le 1er cas, mais en pratique ça revient au ^même

[snip le contre-exemple]

Euh... j'espère qu'"en pratique", i.e. dans du vrai code (de
production), tu ne vois pas ce genre de truc ;-)

--
Wink
FLL, Epagneul Breton

Back to top
drkm
Guest





PostPosted: Tue May 18, 2004 11:55 pm    Post subject: Re: const ? Reply with quote

Jean-Marc Bourguet <jm (AT) bourguet (DOT) org> writes:

Quote:
"Alexandre" <alex.g (AT) netcourrier (DOT) com> writes:

la référence constante n'est pas strictement équivalente à une valeur (const
matrice& != matrice) car il n'y a aucune copie de l'objet passé en paramètre
dans le 1er cas, mais en pratique ça revient au ^même

int global;

void bar() {
global = 42;
}

int foo(int const& x) {
bar();
return x;
}

...
global = 0;
assert(foo(global) == 42);

Heu, je ne vois pas vraiment où tu veux en venir.

--drkm

Back to top
Fabien LE LEZ
Guest





PostPosted: Wed May 19, 2004 12:58 am    Post subject: Re: const ? Reply with quote

On Wed, 19 May 2004 01:55:39 +0200, drkm <usenet.fclcxx (AT) fgeorges (DOT) org>
wrote:

Quote:
Heu, je ne vois pas vraiment où tu veux en venir.

Le résultat serait différent s'il avait écrit

int foo (int const x)

--
Wink
FLL, Epagneul Breton

Back to top
Jean-Marc Bourguet
Guest





PostPosted: Wed May 19, 2004 6:26 am    Post subject: Re: const ? Reply with quote

Fabien LE LEZ <gramster (AT) gramster (DOT) com> writes:

Quote:
On 18 May 2004 20:54:38 +0200, Jean-Marc Bourguet <jm (AT) bourguet (DOT) org
wrote:

"Alexandre" dans le 1er cas, mais en pratique ça revient au ^même

[snip le contre-exemple]

Euh... j'espère qu'"en pratique", i.e. dans du vrai code (de
production), tu ne vois pas ce genre de truc Wink

En pratique, je vois des problemes d'alias (plutot d'ailleurs avec des
pointeurs que des references -- surtout que que je viens de passer sur
une partie du projet ecrite en C, mais qui compilera en C++ dans la
version qui suit celle qui va partir en production bientot avec pour
objectif d'utiliser du C++, ah travailler sur des fichiers modifie la
derniere fois en 94 ...). Malheureusement souvent mieux cache que
celui que j'ai montre.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
drkm
Guest





PostPosted: Wed May 19, 2004 1:20 pm    Post subject: Re: const ? Reply with quote

Fabien LE LEZ <gramster (AT) gramster (DOT) com> writes:

Quote:
On Wed, 19 May 2004 01:55:39 +0200, drkm ^^^^^^^^
wrote:

Heu, je ne vois pas vraiment où tu veux en venir.

Le résultat serait différent s'il avait écrit

int foo (int const x)

Il était encore tôt pourtant ;-(. Merci.

--drkm

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.