In particular, the way most C++ implementations work implies that a change in the size of a base class requires a recompilation of all derived classes.
此语句来自 stroustrup 书。
因此,如果基类在 .so
文件中,而我们只是更改成员函数实现,那么是否意味着我们不必重新编译链接到该共享对象的程序?
最佳答案
正式来说,如果您不重新编译,您就违反了单一定义规则,并得到未定义的行为。
实际上,只要您修改的成员函数没有在任何地方内联,并且您没有更改签名,您就可能保持二进制兼容性。在大多数平台上。如果幸运的话,您的平台文档提供了这样的保证。
关于c++ - 基类更改后重新编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9188101/