We support virtual and override in NLL. And these translate directly over in C#, and are just both virtual in C++. C# will let you know if you don't override a virtual when you should or other such things, but C++ is more lax and will let pretty much anything through.
So I've setup some validation in the transpiler to make sure you must override if necessary. And to check that the base class also has the function marked as virtual.
I was tossing up the idea of just decorating everything with virtual and having the transpiler work out what is override when outputting C#, but for now I think being intentional feels slightly better.