我看到了这篇二进制兼容性文章 binary_compatibiliy_new_virtuals_to_a_non-leaf_class .
如果我有一个 linux 软件,它有多个共享库和一个加载所有这些库的二进制文件。我在一个仅在一个共享库中完全使用的类中添加了一个虚函数。此链接中提到的这一点是否仍然有效?
根据我的理解,虚拟表存在于共享库中,如果我正在进行任何不会被外界触及的更改,那么我不应该担心该更改的二进制兼容性。
最佳答案
如果您有一个使用该特定类的外部客户端(未重新编译),您将破坏二进制兼容性。因此,在您的情况下,.so 文件中更改的类要么未作为外部接口(interface)的一部分公开,要么未被您的应用程序使用。无论哪种情况,您的应用都将继续运行。
关于c++ - 二进制兼容性因虚函数而中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9315241/