 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
BuG Guest
|
Posted: Tue May 18, 2004 6:08 am Post subject: const ? |
|
|
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
|
Posted: Tue May 18, 2004 6:20 am Post subject: Re: const ? |
|
|
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
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Tue May 18, 2004 8:04 pm Post subject: Re: const ? |
|
|
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 ;-)
--
FLL, Epagneul Breton
|
|
| Back to top |
|
 |
drkm Guest
|
Posted: Tue May 18, 2004 11:55 pm Post subject: Re: const ? |
|
|
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
|
Posted: Wed May 19, 2004 12:58 am Post subject: Re: const ? |
|
|
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)
--
FLL, Epagneul Breton
|
|
| Back to top |
|
 |
Jean-Marc Bourguet Guest
|
Posted: Wed May 19, 2004 6:26 am Post subject: Re: const ? |
|
|
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
|
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
|
Posted: Wed May 19, 2004 1:20 pm Post subject: Re: const ? |
|
|
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 |
|
 |
|
|
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
|
|