Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
James Kanze
michel45 wrote:
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.
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.
Mes questions : Est-ce la même chose ?
Non, vue que ta suggestion n'est pas légale.
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.
Qui est dans le juste ?
L'exemple que tu as vu.
-- James Kanze mailto: 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
michel45 wrote:
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.
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.
Mes questions : Est-ce la même chose ?
Non, vue que ta suggestion n'est pas légale.
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.
Qui est dans le juste ?
L'exemple que tu as vu.
--
James Kanze mailto: james.kanze@free.fr
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
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.
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.
Mes questions : Est-ce la même chose ?
Non, vue que ta suggestion n'est pas légale.
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.
Qui est dans le juste ?
L'exemple que tu as vu.
-- James Kanze mailto: 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