I ran into following question:

You have a class that many libraries depend on. Now you need to modify the class for one application. Which of the following changes require recompiling all libraries before it is safe to build the application?

a. add a constructor
b. add a data member
c. change destructor into virtual
d. add an argument with default value to an existing member function

I'd think that all 4 options would require recompile as they either change the data allocation for class or the public interface of the class. how to go about getting to the right answer in above?