[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux] Re: C++ , problemes
- To: linux@lists.linuxbe.org
- Subject: [linux] Re: C++ , problemes
- From: Damien Diederen <dash@linuxbe.org>
- Date: Fri, 6 Jul 2001 17:24:12 +0200
- In-reply-to: <>; from pbleser@atosorigin.com on Thu, Jul 05, 2001 at 11:41:30AM +0200
- References: <> <> <> <>
- Reply-to: Damien Diederen <dash@linuxbe.org>
- User-agent: Mutt/1.2.5i
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 ]