title: why do you have to put "virtual" into the base class instead of just using the "override" in children? in C++
body: <p>The headline pretty much says it all.
  Why do you need to define in the base class that you will may override a function in the future?</p>
  
  <p>This way you have to modify the base class if you want to derive a differently behaving version from it, and you havent thought about that particular function in the base to mark virtual. </p>
  
  <p>As far as I know you solve such abstraction definition in java by using override which (although I only shed an eye on java so far) seems way more natural to me. Is this twist in c++ meant to enforce programmers to think ahead, or there is a technical reason why it works like this?</p>