c++ - 基类更改后重新编译

标签 c++ compilation recompile

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/

相关文章:

c++ - 错误 : Assigning to an array from an initializer list

c++ - 如何从 SFML 中的像素数组加载 sf::Image?

c++ - Boost初学者,boost::bind噩梦

c++ - Visual Studio 2010 : Using define macro to specify output executable

linux - 尽管与存档有直接链接,但对任何 libc 符号的 undefined reference

c++ - g++ 会将我的程序与它不使用的库中的类链接起来吗?

c++ - 使用模板类定义声明变量内联

delphi - 在 DataSnap XE 中访问公共(public) IP 地址/重新编译 DataSnap 框架

linux - CFQ、Deadline 和 NOOP 有什么区别?

c++ - 在不重新编译程序的情况下添加新的游戏类型? (C++)