On Tue, 04 Jun 2013 01:05:28 -0400, Simen Kjaeraas <[email protected]> wrote:

On Tue, 04 Jun 2013 06:16:45 +0200, Steven Schveighoffer <[email protected]> wrote:

I think it is unfair to say most classes are not base classes. This would mean most classes are marked as final. I don't think they are. One of the main reasons to use classes in the first place is for extendability.

This is false. Consider this hierarchy: A->B->C, where x->y means 'x
derives from y'. There is only one base class (A), and only one class
that may be marked final (C). This will often be the case.

I think you mean the other way around. x->y means 'y derives from x'. But I get your point.

However, it's an invalid point. By this logic there is exactly one base class, Object. I think it's safe to say that way of thinking is not productive. Any class that is not final can be a base class. The classes it derives from are not relevant (including Object).

BTW, did you know you can extend a base class and simply make the extension final, and now all the methods on that derived class become non-virtual calls? Much easier to do than making the original base virtual (Note I haven't tested this to verify, but if not, it should be changed in the compiler).

This does however not help one iota when you have a reference to a base
class. This will also often be the case.

I believe this is a red herring. If you are not in control of the creation of the object, the system may actually REQUIRE virtuality, since the base pointer might actually be to a derived type.

-Steve

Reply via email to