"kanze" writes:
[...]
| tu parles de ce que tu veux, non de ce que tu as. Mais j'ai du
| mal à voir comment tu catégorises les virtuelles privées ici --
| peut-être je suis en train de me laisser trop conditionner par
| Java, mais une fonction invisible virtuelle n'a pas de sens ; tu
| ne peux pas la supplanter, parce que si le nom est invisible, le
| compilateur doit prendre tes essaies de supplantage comme la
| déclaration d'une fonction nouvelle (elle aussi virtuelle).
Hmm.
struct Base {
private:
virtual void f() = 0;
};
struct Derived : Base {
void f(int) { }
};
Derived a -- ou plutôt herite -- une fonction virtuelle. Mais
elle est invisible dans Derived.
"kanze" <kanze@gabi-soft.fr> writes:
[...]
| tu parles de ce que tu veux, non de ce que tu as. Mais j'ai du
| mal à voir comment tu catégorises les virtuelles privées ici --
| peut-être je suis en train de me laisser trop conditionner par
| Java, mais une fonction invisible virtuelle n'a pas de sens ; tu
| ne peux pas la supplanter, parce que si le nom est invisible, le
| compilateur doit prendre tes essaies de supplantage comme la
| déclaration d'une fonction nouvelle (elle aussi virtuelle).
Hmm.
struct Base {
private:
virtual void f() = 0;
};
struct Derived : Base {
void f(int) { }
};
Derived a -- ou plutôt herite -- une fonction virtuelle. Mais
elle est invisible dans Derived.
"kanze" writes:
[...]
| tu parles de ce que tu veux, non de ce que tu as. Mais j'ai du
| mal à voir comment tu catégorises les virtuelles privées ici --
| peut-être je suis en train de me laisser trop conditionner par
| Java, mais une fonction invisible virtuelle n'a pas de sens ; tu
| ne peux pas la supplanter, parce que si le nom est invisible, le
| compilateur doit prendre tes essaies de supplantage comme la
| déclaration d'une fonction nouvelle (elle aussi virtuelle).
Hmm.
struct Base {
private:
virtual void f() = 0;
};
struct Derived : Base {
void f(int) { }
};
Derived a -- ou plutôt herite -- une fonction virtuelle. Mais
elle est invisible dans Derived.
"kanze" writes:Jean-Marc Bourguet wrote:Le cas visible et inaccessible me semble moins utile que
le cas invisible et inaccessible, en particulier je ne
vois pas de probleme qu'il resouds que le second ne
resouds pas non plus.
C'est le cas des fonctions virtuelles privées, par exemple.
C'est le cas de tout ce qui est prive mais non cache par une
autre definition.Tu ne peux pas appelé la fonction, mais tu peux bien la
supplanter.
Je crois aussi qu'une partie du problème se tourne autour de
ce qu'on entend par la visibilité. Un constructeur de copie
privé ferait bien partie de la cas invisible et
inaccessible, sauf qu'il a l'effet bien visible d'inhiber la
génération du constructeur de copie par défaut. Je ne suis
pas sûr où le mettre dans tes catégorisations.
C'est bien un cas ou visible et inaccessible est utile en C++.
Mais j'ai toujours eu l'impression que c'est un hack, utile
mais un hack tout de meme.
Strictement parlant, évidemment, il n'y a pas de catégorie
avec invisible en C++;
Il y a le cas ou des definitions sont cachees par d'autres
dans un scope imbrique.
quand tu parles d'invisible et inaccessible, tu parles de ce
que tu veux, non de ce que tu as.
Exact.Mais j'ai du mal à voir comment tu catégorises les
virtuelles privées ici -- peut-être je suis en train de me
laisser trop conditionner par Java, mais une fonction
invisible virtuelle n'a pas de sens ; tu ne peux pas la
supplanter, parce que si le nom est invisible, le
compilateur doit prendre tes essaies de supplantage comme la
déclaration d'une fonction nouvelle (elle aussi virtuelle).
Donc, par exemple, en Java :
class Base
{
private void f() ;
}
class Derived extends Base
{
public void f() ;
} ;
le f() dans Derived ne supplante pas le f() dans Base --
tout se passe comme si le f() dans Base n'existait pas.
Je ne suis pas contre une telle catégorie ; elle serait
utile aussi. Mais la catégorie réele de private aujourd'hui
-- visible mais inaccessible -- n'est pas sans intérêt, et
m'a bien manqué quand j'ai fait du Java.
Tu peux donner un exemple autre que le constructeur de copie?
"kanze" <kanze@gabi-soft.fr> writes:
Jean-Marc Bourguet wrote:
Le cas visible et inaccessible me semble moins utile que
le cas invisible et inaccessible, en particulier je ne
vois pas de probleme qu'il resouds que le second ne
resouds pas non plus.
C'est le cas des fonctions virtuelles privées, par exemple.
C'est le cas de tout ce qui est prive mais non cache par une
autre definition.
Tu ne peux pas appelé la fonction, mais tu peux bien la
supplanter.
Je crois aussi qu'une partie du problème se tourne autour de
ce qu'on entend par la visibilité. Un constructeur de copie
privé ferait bien partie de la cas invisible et
inaccessible, sauf qu'il a l'effet bien visible d'inhiber la
génération du constructeur de copie par défaut. Je ne suis
pas sûr où le mettre dans tes catégorisations.
C'est bien un cas ou visible et inaccessible est utile en C++.
Mais j'ai toujours eu l'impression que c'est un hack, utile
mais un hack tout de meme.
Strictement parlant, évidemment, il n'y a pas de catégorie
avec invisible en C++;
Il y a le cas ou des definitions sont cachees par d'autres
dans un scope imbrique.
quand tu parles d'invisible et inaccessible, tu parles de ce
que tu veux, non de ce que tu as.
Exact.
Mais j'ai du mal à voir comment tu catégorises les
virtuelles privées ici -- peut-être je suis en train de me
laisser trop conditionner par Java, mais une fonction
invisible virtuelle n'a pas de sens ; tu ne peux pas la
supplanter, parce que si le nom est invisible, le
compilateur doit prendre tes essaies de supplantage comme la
déclaration d'une fonction nouvelle (elle aussi virtuelle).
Donc, par exemple, en Java :
class Base
{
private void f() ;
}
class Derived extends Base
{
public void f() ;
} ;
le f() dans Derived ne supplante pas le f() dans Base --
tout se passe comme si le f() dans Base n'existait pas.
Je ne suis pas contre une telle catégorie ; elle serait
utile aussi. Mais la catégorie réele de private aujourd'hui
-- visible mais inaccessible -- n'est pas sans intérêt, et
m'a bien manqué quand j'ai fait du Java.
Tu peux donner un exemple autre que le constructeur de copie?
"kanze" writes:Jean-Marc Bourguet wrote:Le cas visible et inaccessible me semble moins utile que
le cas invisible et inaccessible, en particulier je ne
vois pas de probleme qu'il resouds que le second ne
resouds pas non plus.
C'est le cas des fonctions virtuelles privées, par exemple.
C'est le cas de tout ce qui est prive mais non cache par une
autre definition.Tu ne peux pas appelé la fonction, mais tu peux bien la
supplanter.
Je crois aussi qu'une partie du problème se tourne autour de
ce qu'on entend par la visibilité. Un constructeur de copie
privé ferait bien partie de la cas invisible et
inaccessible, sauf qu'il a l'effet bien visible d'inhiber la
génération du constructeur de copie par défaut. Je ne suis
pas sûr où le mettre dans tes catégorisations.
C'est bien un cas ou visible et inaccessible est utile en C++.
Mais j'ai toujours eu l'impression que c'est un hack, utile
mais un hack tout de meme.
Strictement parlant, évidemment, il n'y a pas de catégorie
avec invisible en C++;
Il y a le cas ou des definitions sont cachees par d'autres
dans un scope imbrique.
quand tu parles d'invisible et inaccessible, tu parles de ce
que tu veux, non de ce que tu as.
Exact.Mais j'ai du mal à voir comment tu catégorises les
virtuelles privées ici -- peut-être je suis en train de me
laisser trop conditionner par Java, mais une fonction
invisible virtuelle n'a pas de sens ; tu ne peux pas la
supplanter, parce que si le nom est invisible, le
compilateur doit prendre tes essaies de supplantage comme la
déclaration d'une fonction nouvelle (elle aussi virtuelle).
Donc, par exemple, en Java :
class Base
{
private void f() ;
}
class Derived extends Base
{
public void f() ;
} ;
le f() dans Derived ne supplante pas le f() dans Base --
tout se passe comme si le f() dans Base n'existait pas.
Je ne suis pas contre une telle catégorie ; elle serait
utile aussi. Mais la catégorie réele de private aujourd'hui
-- visible mais inaccessible -- n'est pas sans intérêt, et
m'a bien manqué quand j'ai fait du Java.
Tu peux donner un exemple autre que le constructeur de copie?
Jean-Marc Bourguet wrote:"kanze" writes:Jean-Marc Bourguet wrote:
[...]
C'est bien un cas ou visible et inaccessible est utile en C++.
Mais j'ai toujours eu l'impression que c'est un hack, utile
mais un hack tout de meme.
Dans le cas de la déclaration privée du constructeur de copie
(ou de l'opérateur d'affectation), c'est bien un hack -- il n'y
a rien à dire.
[...]
Je ne suis pas contre une telle catégorie ; elle serait
utile aussi. Mais la catégorie réele de private aujourd'hui
-- visible mais inaccessible -- n'est pas sans intérêt, et
m'a bien manqué quand j'ai fait du Java.
Tu peux donner un exemple autre que le constructeur de copie?
Les fonctions virtuelle privée, utilisées soit pour la programmation
par contrat, soit pour le modèle de conception template.
Aussi : tu peux t'en servir pour inhiber certaines conversions
inplicites lors de l'appel d'une fonction publique.
Jean-Marc Bourguet wrote:
"kanze" <kanze@gabi-soft.fr> writes:
Jean-Marc Bourguet wrote:
[...]
C'est bien un cas ou visible et inaccessible est utile en C++.
Mais j'ai toujours eu l'impression que c'est un hack, utile
mais un hack tout de meme.
Dans le cas de la déclaration privée du constructeur de copie
(ou de l'opérateur d'affectation), c'est bien un hack -- il n'y
a rien à dire.
[...]
Je ne suis pas contre une telle catégorie ; elle serait
utile aussi. Mais la catégorie réele de private aujourd'hui
-- visible mais inaccessible -- n'est pas sans intérêt, et
m'a bien manqué quand j'ai fait du Java.
Tu peux donner un exemple autre que le constructeur de copie?
Les fonctions virtuelle privée, utilisées soit pour la programmation
par contrat, soit pour le modèle de conception template.
Aussi : tu peux t'en servir pour inhiber certaines conversions
inplicites lors de l'appel d'une fonction publique.
Jean-Marc Bourguet wrote:"kanze" writes:Jean-Marc Bourguet wrote:
[...]
C'est bien un cas ou visible et inaccessible est utile en C++.
Mais j'ai toujours eu l'impression que c'est un hack, utile
mais un hack tout de meme.
Dans le cas de la déclaration privée du constructeur de copie
(ou de l'opérateur d'affectation), c'est bien un hack -- il n'y
a rien à dire.
[...]
Je ne suis pas contre une telle catégorie ; elle serait
utile aussi. Mais la catégorie réele de private aujourd'hui
-- visible mais inaccessible -- n'est pas sans intérêt, et
m'a bien manqué quand j'ai fait du Java.
Tu peux donner un exemple autre que le constructeur de copie?
Les fonctions virtuelle privée, utilisées soit pour la programmation
par contrat, soit pour le modèle de conception template.
Aussi : tu peux t'en servir pour inhiber certaines conversions
inplicites lors de l'appel d'une fonction publique.
"kanze" writes:Jean-Marc Bourguet wrote:"kanze" writes:Jean-Marc Bourguet wrote:
[...]C'est bien un cas ou visible et inaccessible est utile en C++.
Mais j'ai toujours eu l'impression que c'est un hack, utile
mais un hack tout de meme.
Dans le cas de la déclaration privée du constructeur de copie
(ou de l'opérateur d'affectation), c'est bien un hack -- il n'y
a rien à dire.
[...]Je ne suis pas contre une telle catégorie ; elle serait
utile aussi. Mais la catégorie réele de private aujourd'hui
-- visible mais inaccessible -- n'est pas sans intérêt, et
m'a bien manqué quand j'ai fait du Java.
Tu peux donner un exemple autre que le constructeur de copie?
Les fonctions virtuelle privée, utilisées soit pour la
programmation par contrat, soit pour le modèle de conception
template.
En quoi avoir ces fonctions privees plutot que protected apporte
quelque chose?
Si elles ont un comportement utile, pourquoi priver les
descendants de la possibilite d'ajouter a ce comportement sans
le reecrire?
Si elles n'ont pas de comportement utile, elles devraient etre
virtuelles pures sans implementation.
Aussi : tu peux t'en servir pour inhiber certaines
conversions inplicites lors de l'appel d'une fonction
publique.
Nous sommes dans le meme cadre que la declaration privee du
constructeur de copie. Desactiver quelque chose qu'on a
d'office sans l'avoir demande.
"kanze" <kanze@gabi-soft.fr> writes:
Jean-Marc Bourguet wrote:
"kanze" <kanze@gabi-soft.fr> writes:
Jean-Marc Bourguet wrote:
[...]
C'est bien un cas ou visible et inaccessible est utile en C++.
Mais j'ai toujours eu l'impression que c'est un hack, utile
mais un hack tout de meme.
Dans le cas de la déclaration privée du constructeur de copie
(ou de l'opérateur d'affectation), c'est bien un hack -- il n'y
a rien à dire.
[...]
Je ne suis pas contre une telle catégorie ; elle serait
utile aussi. Mais la catégorie réele de private aujourd'hui
-- visible mais inaccessible -- n'est pas sans intérêt, et
m'a bien manqué quand j'ai fait du Java.
Tu peux donner un exemple autre que le constructeur de copie?
Les fonctions virtuelle privée, utilisées soit pour la
programmation par contrat, soit pour le modèle de conception
template.
En quoi avoir ces fonctions privees plutot que protected apporte
quelque chose?
Si elles ont un comportement utile, pourquoi priver les
descendants de la possibilite d'ajouter a ce comportement sans
le reecrire?
Si elles n'ont pas de comportement utile, elles devraient etre
virtuelles pures sans implementation.
Aussi : tu peux t'en servir pour inhiber certaines
conversions inplicites lors de l'appel d'une fonction
publique.
Nous sommes dans le meme cadre que la declaration privee du
constructeur de copie. Desactiver quelque chose qu'on a
d'office sans l'avoir demande.
"kanze" writes:Jean-Marc Bourguet wrote:"kanze" writes:Jean-Marc Bourguet wrote:
[...]C'est bien un cas ou visible et inaccessible est utile en C++.
Mais j'ai toujours eu l'impression que c'est un hack, utile
mais un hack tout de meme.
Dans le cas de la déclaration privée du constructeur de copie
(ou de l'opérateur d'affectation), c'est bien un hack -- il n'y
a rien à dire.
[...]Je ne suis pas contre une telle catégorie ; elle serait
utile aussi. Mais la catégorie réele de private aujourd'hui
-- visible mais inaccessible -- n'est pas sans intérêt, et
m'a bien manqué quand j'ai fait du Java.
Tu peux donner un exemple autre que le constructeur de copie?
Les fonctions virtuelle privée, utilisées soit pour la
programmation par contrat, soit pour le modèle de conception
template.
En quoi avoir ces fonctions privees plutot que protected apporte
quelque chose?
Si elles ont un comportement utile, pourquoi priver les
descendants de la possibilite d'ajouter a ce comportement sans
le reecrire?
Si elles n'ont pas de comportement utile, elles devraient etre
virtuelles pures sans implementation.
Aussi : tu peux t'en servir pour inhiber certaines
conversions inplicites lors de l'appel d'une fonction
publique.
Nous sommes dans le meme cadre que la declaration privee du
constructeur de copie. Desactiver quelque chose qu'on a
d'office sans l'avoir demande.