Boost logo

Boost :

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
> place?
> > Since the class already has other virtual functions this won't
> generate any
> > (significant) additional overhead (the only thing what's added is
> another
> > function pointer to the already existing virtual function table,
> barely
> > 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.

Regards Hartmut

Boost list run by bdawes at, gregod at, cpdaniel at, john at