OVH Cloud OVH Cloud

Déclaration d'une classe sealed

34 réponses
Avatar
nico
Bonjour,

Comment déclarer une classe indérivable en C++ ?

Merci.

--
nico

10 réponses

1 2 3 4
Avatar
Michel Michaud
Dans le message ctlbdb$6ej$,
Sans parler d'optimisation, il y a la possibilite de gerer les
implementations completement privees. Par exemple en C++ on pourrait
imaginer un moyen de declarer la partie public seule dans le header
et la partie private seule dans l'implementation. Dans ce cas il
est tres difficile de deriver d'une telle classe puisque la classe
complete n'est pas connue des autres TU (sauf mecanisme
a-la-export), ce qui justifierait de la declarer "final".


Ce ne serait pas plutôt le contraire ? On n'a pas besoin de final
(ou sealed) puisque la dérivation n'est pas possible ?

L'interet est que la partie concernant l'implementation est
completement cachee - y compris les membres - une sorte d'extension
de l'ADT aux classes. Perso je l'utilise en C (OOC) et ca me plait
assez. Ca rend le header plus lisible et ca met une vraie barriere
(psychologique dans mon cas ;-) entre l'interface et
l'implementation.


On peut le faire en C++ avec pimpl, mais ça n'a rien à voir avec la
dérivation, ni avec un façon d'empêcher la dérivation...

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/

Avatar
Loïc Joly
M. B. wrote:
"Fabien LE LEZ" a écrit dans le message de
news:

On Sun, 30 Jan 2005 23:13:25 -0500, "Michel Michaud" :

J'ai l'impression que Java (et Microsoft Java, alias C#) veulent
enfermer le programmeur dans le mode de pensée prévu par l'auteur du
langage, et d'une manière générale cherchent à réduire les
possibilités.



enfermer le programmeur dans le mode de pensee prevu par l'auteur de la
classe 'sealed', pas par l'auteur du langage.


Pour une fois, je suis relativement d'accord avec MB... (Euh, ça se
soigne ?)

Je pense que quand on parle de langage "nounou" (fais pas ci, fait pas
ça) ou "baba cool" (fait ce que tu veux, c'est cool mon pote, (et
assume)), je trouve que c'est réducteur.

Il faut y voir à mon avis 2 niveau :
- Ce que fait le langage
- Ce que le langage permet à une personne écrivant un module de faire
vis à vis des utilisateurs de ce module.

Selon ce point de vue, le C++ est clairement "baba cool" au niveau du
langage même (bien qu'un peu moins que le C). Au niveau du code qu'il
permet d'écrire, c'est plus nuancé. private, const, virtualité à
expliciter,... vont dans le sens nounou, mais par rapport à d'autres
langages, comme java, ça reste quand même "nounou ex-baba cool".

--
Loïc


Avatar
Loïc Joly
Laurent Deniau wrote:

Pour comprendre Gaby, il faut parfois le suivre sur plusieurs newsgroups
en parallele ;-) En l'occurence lire le thread recent "Altering objects
in a std::set" sur comp.std.c++ (Il y donne un lien sur un papier tres
interessant).


Peut être, mais payer 25$ pour avoir le droit de le lire pendant 24h me
semble un peu excessif... :( C'est d'autant plus dommage que l'abstract
avait l'air intéressant.

--
Loïc

Avatar
Fabien LE LEZ
On 31 Jan 2005 17:43:26 +0100, Gabriel Dos Reis
:

que la spécification de std::set<> est faite en violation de la
« philosophie de C++ » énoncé dans le message auquel je répondais.


Errare humanum est...
De toutes façons, on peut faire du C++ parfaitement portable en
remplaçant std::set<> par autre chose (une classe faite maison par
exemple) :-)


--
;-)

Avatar
Jean-Marc Bourguet
Loïc Joly writes:

Laurent Deniau wrote:
Pour comprendre Gaby, il faut parfois le suivre sur plusieurs newsgroups
en parallele ;-) En l'occurence lire le thread recent "Altering objects
in a std::set" sur comp.std.c++ (Il y donne un lien sur un papier tres
interessant).


Peut être, mais payer 25$ pour avoir le droit de le lire pendant 24h me
semble un peu excessif... :( C'est d'autant plus dommage que l'abstract
avait l'air intéressant.


N'est-ce pas? C'est une revue innaccessible a ceux n'ayant pas acces
a une bibliotheque universitaire ou d'entreprise qui y est abonnee.
Globablement beaucoup d'articles m'y semble interessant, mais
globalement c'est hors de prix pour un particulier.

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


Avatar
Laurent Deniau
Loïc Joly wrote:
Laurent Deniau wrote:


Pour comprendre Gaby, il faut parfois le suivre sur plusieurs
newsgroups en parallele ;-) En l'occurence lire le thread recent
"Altering objects in a std::set" sur comp.std.c++ (Il y donne un lien
sur un papier tres interessant).



Peut être, mais payer 25$ pour avoir le droit de le lire pendant 24h me
semble un peu excessif... :( C'est d'autant plus dommage que l'abstract
avait l'air intéressant.


Tu veux dire qu'a partir du lien donne ci-dessous tu ne peux pas
recuperer l'article "full text" a partir du lien PDF de cette page?

http://www3.interscience.wiley.com/cgi-bin/abstract/106558112/ABSTRACT

a+, ld.


Avatar
Jean-Marc Bourguet
Laurent Deniau writes:

Loïc Joly wrote:
Laurent Deniau wrote:


Pour comprendre Gaby, il faut parfois le suivre sur plusieurs newsgroups
en parallele ;-) En l'occurence lire le thread recent "Altering objects
in a std::set" sur comp.std.c++ (Il y donne un lien sur un papier tres
interessant).
Peut être, mais payer 25$ pour avoir le droit de le lire pendant 24h me

semble un peu excessif... :( C'est d'autant plus dommage que l'abstract
avait l'air intéressant.


Tu veux dire qu'a partir du lien donne ci-dessous tu ne peux pas recuperer
l'article "full text" a partir du lien PDF de cette page?

http://www3.interscience.wiley.com/cgi-bin/abstract/106558112/ABSTRACT


Gagne. On me propose pour 25$ de pouvoir le consulter pendant 24h,
j'ai pas encore compris si je pouvais conserver le PDF ou pas.
L'abonnement annuel personnel a Software:Practice and Experience est
de $ 2290.00. Belle reduction par rapport a l'institutionnel a
$3055.00 ou $3361.00 pour l'acces electronique en plus . (Autre chose
pas claire: est des $ canadiens ou pas? Ils parlent de taxe pour les
residents du Canada).

Mais ca ne m'etonnerais pas que le cern ait l'abonnement a
$3361.00... et que la verification se fasse sur les adresses IP -- il
est donc possible que tu ais acces sans rien remarquer. On a ce genre
de choses au boulot mais pas pour ca.

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



Avatar
Gabriel Dos Reis
Jean-Marc Bourguet writes:

| Loïc Joly writes:
|
| > Laurent Deniau wrote:
| > > Pour comprendre Gaby, il faut parfois le suivre sur plusieurs newsgroups
| > > en parallele ;-) En l'occurence lire le thread recent "Altering objects
| > > in a std::set" sur comp.std.c++ (Il y donne un lien sur un papier tres
| > > interessant).
| >
| > Peut être, mais payer 25$ pour avoir le droit de le lire pendant 24h me
| > semble un peu excessif... :( C'est d'autant plus dommage que l'abstract
| > avait l'air intéressant.
|
| N'est-ce pas? C'est une revue innaccessible a ceux n'ayant pas acces
| a une bibliotheque universitaire ou d'entreprise qui y est abonnee.
| Globablement beaucoup d'articles m'y semble interessant, mais
| globalement c'est hors de prix pour un particulier.

Tu connais un meilleur endroit pour publier ce genre de choses avec
une review de qualité ? (c'est uen question sérieuse).

J'ai cherché mais les revues que j'ai trouvées sur le logiciel en
général sont (1) soit (trop) orientées commerciales ; (b) soit pas de
très bonne qualité.
S&P n'est pas le nirvana, mais globalement ils sont plutôt corrects
sur ce qu'ils acceptent (et demandent des reviews de qualité).

-- Gaby
Avatar
Jean-Marc Desperrier
Loïc Joly wrote:
Selon ce point de vue, le C++ est clairement "baba cool" au niveau du
langage même (bien qu'un peu moins que le C). Au niveau du code qu'il
permet d'écrire, c'est plus nuancé. private, const, virtualité à
expliciter,... vont dans le sens nounou,


Virtualité à expliciter ? C'est clairement dans le sens "baba cool" et
"assume ce que tu fais" !

J'ai un vrai bug de production dans lequel quelqu'un avait "oublié" une
déclaration de virtualité. L'absence de warning quand la fonction en
question est redéfinie par une classe dérivée est aussi un élément qui
aide à ne pas se rendre compte qu'on s'est mis dedans.

Avatar
Laurent Deniau
Jean-Marc Bourguet wrote:
Laurent Deniau writes:


Loïc Joly wrote:

Laurent Deniau wrote:


Pour comprendre Gaby, il faut parfois le suivre sur plusieurs newsgroups
en parallele ;-) En l'occurence lire le thread recent "Altering objects
in a std::set" sur comp.std.c++ (Il y donne un lien sur un papier tres
interessant).


Peut être, mais payer 25$ pour avoir le droit de le lire pendant 24h me
semble un peu excessif... :( C'est d'autant plus dommage que l'abstract
avait l'air intéressant.


Tu veux dire qu'a partir du lien donne ci-dessous tu ne peux pas recuperer
l'article "full text" a partir du lien PDF de cette page?

http://www3.interscience.wiley.com/cgi-bin/abstract/106558112/ABSTRACT



Gagne. On me propose pour 25$ de pouvoir le consulter pendant 24h,
j'ai pas encore compris si je pouvais conserver le PDF ou pas.
L'abonnement annuel personnel a Software:Practice and Experience est
de $ 2290.00. Belle reduction par rapport a l'institutionnel a
$3055.00 ou $3361.00 pour l'acces electronique en plus . (Autre chose
pas claire: est des $ canadiens ou pas? Ils parlent de taxe pour les
residents du Canada).

Mais ca ne m'etonnerais pas que le cern ait l'abonnement a
$3361.00... et que la verification se fasse sur les adresses IP -- il


Tout a fait. A part que le cern a souvent les reductions "education" ou
"universite" donc peut-etre a-ton eu une reduc. De toute facon, par
rapport au abonnement extravagant de certaine revue specialise de
physique, ce prix reste "marginal".

est donc possible que tu ais acces sans rien remarquer. On a ce genre
de choses au boulot mais pas pour ca.


Mais tant que personne ne me dit que l'acces est payant, je ne sais pas
que j'ai eu un acces "priviligie" ;-)

a+, ld.




1 2 3 4