OVH Cloud OVH Cloud

type nom_fonction(param) const

5 réponses
Avatar
Nicolas Aunai
salut,


je n'arrive pas a trouver dans mon cours de c++ ce que signifie de
'const' placé a la fin d'un prototype de fonction

merci de l'aide

--
Nico,
http://astrosurf.com/nicoastro
messenger : nicolas_aunai@hotmail.com

5 réponses

Avatar
Anthony Fleury
salut,
je n'arrive pas a trouver dans mon cours de c++ ce que signifie de
'const' placé a la fin d'un prototype de fonction
merci de l'aide



Salut,
C'est dans le cas d'une fonction membre d'une classe que tu trouveras le
const ainsi placé et il signifie que ta fonction en question ne modifiera
pas les membres de ta classe. En clair, ta classe sera dans le même état
avant et après l'execution de cette fonction. Un exemple simple :

class test {
int x;
public:
void augmente() const { return x++; }
};

est interdit et ne passera pas l'étape de la compilation.

Anthony
--
"On est bien sûr de soi quand on est grand, avec notre savoir, notre
morale, tous ces principes auxquels on tient tant.
Mais c'est souvent trop tard que l'on comprend, que le bonheur
était simple comme un jeu d'enfant." -- Sinsemilia

Avatar
Loïc Joly
Nicolas Aunai wrote:

salut,


je n'arrive pas a trouver dans mon cours de c++ ce que signifie de
'const' placé a la fin d'un prototype de fonction


C'est valable uniquement après une fonction membre de classe, et ça veut
dire :
- Que la fonction ne modifiera pas les données membres (autres que
mutable) de la classe.
- Que la fonction peut être appelée sur une référence, un pointeur ou un
objet constant de cette classe.


--
Loïc

Avatar
Nicolas Aunai
"Anthony Fleury" a exprimé avec précision :


Salut,
C'est dans le cas d'une fonction membre d'une classe que tu trouveras le
const ainsi placé et il signifie que ta fonction en question ne modifiera
pas les membres de ta classe. En clair, ta classe sera dans le même état
avant et après l'execution de cette fonction. Un exemple simple :

class test {
int x;
public:
void augmente() const { return x++; }
};

est interdit et ne passera pas l'étape de la compilation.



ok je pense avoir compris, en fait, ça fait que this est un pointeur
constant sur un objet constant, c'est ça ?

--
Nico,
http://astrosurf.com/nicoastro
messenger :

Avatar
Anthony Fleury
"Anthony Fleury" a exprimé avec précision :
Salut,
C'est dans le cas d'une fonction membre d'une classe que tu
trouveras le const ainsi placé et il signifie que ta fonction en
question ne modifiera pas les membres de ta classe. En clair, ta
classe sera dans le même état avant et après l'execution de cette
fonction. Un exemple simple :



[...]


ok je pense avoir compris, en fait, ça fait que this est un pointeur
constant sur un objet constant, c'est ça ?


C'est tout à fait ca, this pour la fonction passe de X *const à X const *
const donc comme tu l'as dit pointeur constant sur un objet constant. Et
comme l'a précisé Loïc Joly, ceci n'est bien sûr valable que pour des
membres non mutables, j'avais omis cette précision.

Anthony
--
"On est bien sûr de soi quand on est grand, avec notre savoir, notre
morale, tous ces principes auxquels on tient tant.
Mais c'est souvent trop tard que l'on comprend, que le bonheur
était simple comme un jeu d'enfant." -- Sinsemilia


Avatar
Mathieu Peyréga
Salut,
C'est dans le cas d'une fonction membre d'une classe que tu trouveras le
const ainsi placé et il signifie que ta fonction en question ne modifiera
pas les membres de ta classe. En clair, ta classe sera dans le même état
avant et après l'execution de cette fonction. Un exemple simple :


sauf les membres déclarés avec le mot clé mutable qui peuvent être
modifiés dans une méthode const...