Would a user be required to re-compile, if only non-virtual, non-overloading member functions were added to a class?
<p>This is just a theoretical question. I've run into a similar problem in the COM world and wondered if this is also applicable in the C++ world. I'm also aware that I could avoid this problem with the Pimpl Idiom.</p>

<p>Suppose I had a class A version 1. I shipped the header file and the library file to the clients.</p>

<p>Then one day, I updated A by adding some functions (which are not virtual and not overloading). Class A is now version 2.</p>

<p>Suppose version 2 was compiled in the same environment and settings as version 1.</p>

<p>My understanding is in the new library file, class A's size and vtable will not be changed. Also since no overloading functions are added, the clients will not call the wrong function. As a result, users are not required to recompile their code.</p>

<p>Are there any pitfalls for this assumption?</p>
