Why are member functions not virtual by default?
Because many classes are not designed to be used as base classes. For example, see class complex. Also, objects of a class with a virtual function require space needed by the virtual function call mechanism – typically one word per object. This overhead can be significant, and can get in the way of layout compatibility with data from other languages (e.g. C and Fortran). See The Design and Evolution of C++ for more design rationale.