← Back to team overview

kicad-developers team mailing list archive

Re: [PATCH 0/4] Use of "virtual" and "override" keywords

 

Why both "virtual" and "override" in "struct C"? It is redundant (you
cannot override a non-virtual function). See
http://en.cppreference.com/w/cpp/language/override.

Regards,
Cheng

On Wed, Jul 13, 2016 at 1:27 AM, Simon Richter <Simon.Richter@xxxxxxxxxx>
wrote:

> Hi Wayne,
>
> On 12.07.2016 16:07, Wayne Stambaugh wrote:
>
> > I was looking over this patch set and before I apply it I want to be
> > sure that all base class functions declared as virtual are explicitly
> > declared as override in the derived classes.  It's a very large patch
> > set and I don't have time to confirm that this is the intent of these
> > patches.
>
> The patches will need to be rebased anyway, there have been several
> changes.
>
> The first patch enables a warning for all functions that override
> virtual functions in base classes but have no "override" -- that is how
> I identified the implicitly virtual functions.
>
> Whether we also add a "virtual" in addition to the "override" is a
> question of code legibility, personally I find it more obvious to be
> explicit here. It might also be an idea to place these in a separate
> block inside the class definition, e.g.:
>
> struct A {
>         virtual void a() = 0;
> };
>
> struct B : A {
>         virtual void b() = 0;
> };
>
> struct C : B {
>         // A
>         virtual void a() override;
>
>         // B
>         virtual void b() override;
> };
>
> This is what I do in my projects, and I've found it to be a tremendous
> help, as it tells me that this function is likely to be called by code
> that doesn't know the concrete type, but only the base class mentioned
> in the comment above.
>
>    Simon
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
>
>

Follow ups

References