 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
michel45 Guest
|
Posted: Sun Jul 24, 2005 12:56 pm Post subject: fonction virtual et const |
|
|
Bonjour à tous,
Je suis nouveau et merci de votre indulgence.
Dans un code d'une Class j'ai trouvé des fonctions virtuelles codées
comme suit :
virtual void f() const=0;
Je n'ai pas saisi le "const=0".
Pour ma part j'aurais écrit :
virtual void f()=0 const;
Mes questions : Est-ce la même chose ? les données membres de la
Class ne seront pas modifiées.
Qui est dans le juste ?
Merci d'avance pour vos éclairsissements.
Michel
|
|
| Back to top |
|
 |
James Kanze Guest
|
Posted: Sun Jul 24, 2005 8:56 pm Post subject: Re: fonction virtual et const |
|
|
michel45 wrote:
| Quote: | Je suis nouveau et merci de votre indulgence. Dans un code
d'une Class j'ai trouvé des fonctions virtuelles codées comme
suit :
virtual void f() const=0;
Je n'ai pas saisi le "const=0".
|
Le « const=0 » ne signifie rien:-). Il y a deux choses
distinctes, en fait, « const » et « = 0 ».
Le « const » signifie que le type de this, dans la classe, est T
const*, et non T* ; normalement, on le considère un contrat que
la fonction ne modifie pas l'état « visible » de l'objet. Le
const fait partie du type de la fonction.
Le « = 0 » signifie que la fonction est pûre, c-à-d qu'elle ne
serait jamais appelée en tant que fonction virtuelle, et qu'elle
doit obligatoirement être supplantée dans une classe dérivée.
| Quote: | Pour ma part j'aurais écrit :
virtual void f()=0 const;
|
Ce qui serait faux. Le fait d'être pûre se met toujours à la
fin. Après tout ce qui concerne le type.
| Quote: | Mes questions : Est-ce la même chose ?
|
Non, vue que ta suggestion n'est pas légale.
| Quote: | les données membres de la Class ne seront pas modifiées.
|
C'est le const qui signifie ça. Grosso modo, parce que les
règles sont en fait un peu plus complexe. Dans la pratique, il
est prèsqu'universel d'utiliser le const « logique », c-à-d que
le programmeur définit ce que signifie « const » pour la classe,
et s'y tenir.
| Quote: | Qui est dans le juste ?
|
L'exemple que tu as vu.
--
James Kanze mailto: [email]james.kanze (AT) free (DOT) fr[/email]
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
|
|
| 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
|
|