<p>Is there any real reason <strong>not</strong> to make a member function virtual in C++?  Of course, there's always the performance argument, but that doesn't seem to stick in most situations since the overhead of virtual functions is fairly low.</p>

<p>On the other hand, I've been bitten a couple of times with forgetting to make a function virtual that <em>should</em> be virtual.  And that seems to be a bigger argument than the performance one.  So is there any reason not to make member functions virtual by default?</p>

One way to read your questions is "Why doesn't C++ make every function virtual by default, unless the programmer overrides that default."  Without consulting my copy of "Design and Evolution of C++": this would add extra storage to every class unless every member function is made non-virtual.  Seems to me this would have required more effort in the compiler implementation, and slowed down the adoption of C++ by providing fodder to the performance obsessed (I count myself in that group.)
Another way to read your questions is "Why do C++ programmers do not make every function virtual unless they have very good reasons not to?"  The performance excuse is probably the reason.  Depending on your application and domain, this might be a good reason or not.  For example, part of my team works in market data ticker plants.  At 100,000+ messages/second on a single stream, the virtual function overhead would be unacceptable.  Other parts of my team work in complex trading infrastructure.  Making most functions virtual is probably a good idea in that context, as the extra flexibility beats the micro-optimization.