Use `override` in `GsmApplication`
Rather than decorating overriding functions with the virtual
keyword, decorate them with override
. This ensures that they correctly override a base function instead of possibly declaring a new function.
Given that GsmApplication
is the leaf class and not a base class, declare it final
. This can help the optimizer perform devirtualization and lets users know that the implementation seen here is the one used. Also move everything that was protected
into private
since there is no difference for final classes.
Depends on !183 (merged)