title: C++ polymorphism/inheritance question: Redefinition of base functions vs virtual functions
body: <p>I know that derived classes can simply "redefine" base class member
  functions, and that when that function of a derived class object is
  called, the function defined in the derived class is used, but...
  Doesn't this render the "virtual" keyword redundant? I have read of
  some obviously significant differences between these two cases (ie: if
  you have a base class pointer pointing to a derived class and you call
  a function, if it is virtual the derived class function will be
  called, but if not, the base class function will be called).</p>
  
  <p>Put another way, what is the purpose of being able to redefine member
  functions as non-virtual functions, and is this a commonly used
  practice?</p>
  
  <p>Personally, it seems to me like it would just get very confusing.</p>
  
  <p>Thanks!</p>