即使在派生类中进行涉及虚拟的其他更改,类视图的ABI是否仍然保持稳定?接口(抽象类)与其他虚拟更改的ABI兼容
也就是说,我有一个接口InterfaceA
(具有许多纯虚函数的抽象类)和一个继承自它的类DerivedB
。我写了一个函数库,它的功能是InterfaceA *
。我想知道的是,只要接口本身没有改变,接口是否保持二进制兼容。
清除,如果我修改InterfaceA
我不认为代码是二进制兼容的。但是,如果我只是修改DerivedB
,说我继承更多接口或添加其他虚拟功能。在最极端的说法中,我从另一个定义InterfaceA
的类继承了多个继承。尽管所有这些变化,InterfaceA
仍然保持二进制兼容?
我的假设和经验到现在是,它是兼容的。我只是寻找这个确认(或反驳,如果不兼容)。
注意:我不关心动态打字或其他投射,我只关心界面功能本身。
另请注意:假设正在使用的编译器版本是ABI稳定的整体 - 没有主要的版本更改。
可能[this](http://accu.org/index.php/journals/1718)这篇文章对你很有意思。 – Simon