[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux] Re: Re: C++ , problemes
Hello !
On Mon, Jul 09, 2001 at 09:28:20AM +0200, Pascal Bleser wrote:
> > > C'est une (grosse) erreur d'avoir virtual dans une classe de base et
> > > de ne pas le répéter dans les classes dérivées. Faut *jamais* faire ca...
> > C'est que ton compilateur est défecteux ;) Sérieusement, une fois qu'une
> > méthode a été déclarée virtuelle, elle l'est _dans toutes les classes
> > qui en descendent_ !
> aaah, nenni !
> Il faut *explicitement* mettre le "virtual" dans les classes dérivées.
Non, non ;)
> > > > On est dans une classe dérivée qui n'a pas besoin de "virtual" sauf
> > > > si elle a elle aussi une classe dérivée !
> > Et même ceci n'est pas juste. C'est valable pour _toutes_ les classes
> > dérivées. C'est un phénomène récurrent !
> Oui mais il faut mettre le virtual soi-meme...
Non plus ;)
> > > Nenni.Sic'estvirtualdanslaclassedebase, tu dois aussi faire virtual.
> > > Sinon t'aura plein d'emmerdes...
> > Seulement si ton compilateur ne comprend pas ce qu'il fait.
> Pas du tout. Si tu ne répetes pas le virtual, c'est toi qui ne comprend pas
> ce que tu fais ;)).
Hum, hum. Tu devrais relire Stroustrup, le langage C++, 3nd edition, et
plus particulièrement la section 12.2.6 et les suivantes. Extrait :
« Le mot clé virtual signale que print () peut se comporter comme
une interface pour la fonction print () définie dans cette classe,
ainsi qu'avec les fonction print () définies dans les classes qui en
sont dérivées. Lorsque des fonctions print () sont définies dans les
classes dérivées, le compilateur garantit le fait que la bonne version
soit appelée pour l'objet Employee. »
On peut ajouter à cela le fait que Stroustrup ne marque _jamais_
explicitement les méthodes virtuelles dans ses classes dérivées.
Claude Vilvens (l'autre maitre du C++ ;) est encore bien plus explicite
dans son cours :
« Une fois une méthode déclarée virtuelle dans une classe de base, il
n'est plus nécessaire de le rappeler dans les classes dérivées. Les
différentes versions d'une méthode virtuelle doivent évidemment avoir le
même prototype. »
[.../...]
Cu,
Dash.
--
For every complex problem there is an answer that is clear, simple, and
wrong.
-- H. L. Mencken
--
Damien Diederen
dash@linuxbe.org
http://users.swing.be/diederen/
[ Soyez précis dans vos sujets svp afin de déterminer directement ]
[ le type de demande... ]
[ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php ]
[ http://LinuxBe.org Contact: listmaster@linuxbe.org ]