Changing a header in a shared library

Hello,

Does changing a header in a shared library under Solaris (say adding a new class data member) will result in not only compiling that library but all of the libraries that depend on that lib that was changed because of the change in the object's size? What about adding a virtual function?
In addition, can you please explain what is the meaning of templates in a shared library, I mean, doesn't a template in a shared library will still bring the code to the executable at link time?

Thanks!