[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux] Re: C++ , problemes



On Thu, Jul 05, 2001 at 11:41:30AM +0200, Pascal Bleser wrote:
> ...
> > > Déjà, tu dois absolument les mettre virtual aussi dans la
> > > classe dérivée (ether):
> > > virtual char* name() {}
> > > virtual void checkLayer() {}
> > Pourquoi ?
> Parce qu'avec virtual, la runtime va vérifier au moment de l'éxécution
> via la table virtuelle (virtual table).
> Et sans virtual, c'est à la compilation qu'est déterminé quelle méthode
> est appellée.
> 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_ !

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

> Nenni. Si c'est virtual dans la classe de base, tu dois aussi faire virtual.
> Sinon t'aura plein d'emmerdes...

Seulement si ton compilateur ne comprend pas ce qu'il fait. 

[.../...]

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  ]