Prev: omission of "virtual" in overridden method declarations in derived classes
Next: omission of "virtual" in overridden method declarations in derived classes
From: Edward Diener on 23 Feb 2010 02:57
Marco Nef wrote:
>>> Or is the virtuality inherited implicitly from the root of the
>>> inheritance tree even if it is omitted in intermediate classes?
>> Yes. C++ does not require the programmer to repeat the 'virtual' keyword
>> for a virtual method in a derived class.
> Which is one of the worst "features" of C++ in large projects, as it causes
> lots of errors (how do you know that a method is virtual if it is not
> written in the declaration of the class you are working with?).
It is called documentation. That's how you know.
> It should
> also be that base methods can only be called in the direct base class, or
> the programmer has to explicitly write a cast to skip a hierachy level.
So if an inherited method is not in the immediate base class, you do not
think that a C++ derived class should be allowed to call it ?
> Some time ago I asked to change this in the new standard, so that virtual
> must be repeated in derived classes. But the reply in this group was that
> lots of old code would not compile anymore. That was a bad answer, as
> compilers could have a flag to ignore such an additional security
> feature in
> old code...
A better answer is simply that C++ programmers neither need or want this
feature which you consider so important.
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]