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 

fonction virtual et const

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





PostPosted: Sun Jul 24, 2005 12:56 pm    Post subject: fonction virtual et const Reply with quote



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





PostPosted: Sun Jul 24, 2005 8:56 pm    Post subject: Re: fonction virtual et const Reply with quote



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
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.