As I understand it, all member functions are virtual in D but the compiler is free to make functions non-virtual if it sees that they are never overridden.
What I'm not clear on is what happens when you compile a module in which member functions are not overridden and then import that module somewhere else where you override a member function. I don't think it re-compiles the original module. Does it simply assume that any member function with external linkage is virtual?