I think a better system would be to explicitly mark functions are virtual, and then use unittesting to catch virtual functions that don't need to be.