From: Hartmut Kaiser (hartmut.kaiser_at_[hidden])
Date: 2008-05-03 14:21:43
> On Sat, May 3, 2008 at 8:00 AM, Hartmut Kaiser
> <hartmut.kaiser_at_[hidden]> wrote:
> > What's the problem with making the destructor virtual in the first
> > Since the class already has other virtual functions this won't
> generate any
> > (significant) additional overhead (the only thing what's added is
> > function pointer to the already existing virtual function table,
> > something to worry about).
> I am not concerned about overhead.
> In C++, you use virtual function calls only when your design requires
> polymorphic behavior. My design does not.
Actually, your class _is_ polymorphic, because otherwise you didn't have any
virtual functions in it. You should be aware of the fact that others might
use it as a base class and as soon as it is polymorphic, they might expect
their destructors to be called.
> If GCC issued a warning if you have a non-virtual function in a class
> that has some virtual functions, would you make the non-virtual
> function virtual? (hint: much like the destructor case, using
> non-virtual function in the first place _could_ be a serious bug.)
Your theoretical assumption is completely off topic because neither of those
are special functions, and no sane compiler never ever would complain about
But leaving aside this, yes I would make my base class functions virtual if
somebody had a (even remote) chance of having his code broken because of a
missing virtual keyword.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk