On Mon, 29 Jan 2024, Sven Barth via fpc-devel wrote:
over whether the method had been declared as virtual.
Hm. That makes no sense at all to me ?
You normally add override only when you know the base class has virtual.
Otherwise, don't add virtual. The compiler will tell you if it was
possible
or not.
But that's the point: you *have* to add override. It will *always* be a
virtual method ("reintroduce" doesn't count, because that's essentially
the same as using a method with a completly different name). It's not in
the control of the user. With "final" the user has that control.
Especially in application code (*not* library code) this can be useful,
especially if the compiler generates different code in both cases (as
said the compiler doesn't need to go through the VMT then if called with
the real class type which can be important in performance relevant code).
Languages like C++, Java and C# all have these functionality as well and
only because *you* can't think of a legitimate use for it, doesn't mean
that no one can.
Please refrain from using things like '*you*' in your replies,
it comes over as very agressive and authoritarian.
I didn't say I cannot think of a legitimate use. I said it does not make
sense to me, as in
"I don't understand what people try to accomplish with this modifier".
Unfortunately I still don't understand after your explanation what adding 'final' is supposed to accomplish.
It may well be legitimate, but I have currently no opinion as I don't understand it.
Maybe an actual code example would be more enlightening.
That way I can also add it to the docs once I understand the intended use
myself.
Michael.
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel