One of the things I like in C/C++ is that... it makes sense. For the most part (mind you the disclaimer) keywords and language constructs are obvious in the way they are used and why they are used in that particular way.
I don't actually expect an answer to this question. Probably there isn't one. But I grew accustomed to believe that almost everything in C/C++ is done in a certain way for a very good reason. And so here it is one of the things that has been nagging me for a long time:
Why can't we use virtual and explicit also on function definitions, but only on their declarations? Really, now....