即使在派生類中進行涉及虛擬的其他更改,類視圖的ABI是否仍然保持穩定?接口(抽象類)與其他虛擬更改的ABI兼容
也就是說,我有一個接口InterfaceA
(具有許多純虛函數的抽象類)和一個繼承自它的類DerivedB
。我寫了一個函數庫,它的功能是InterfaceA *
。我想知道的是,只要接口本身沒有改變,接口是否保持二進制兼容。
清除,如果我修改InterfaceA
我不認爲代碼是二進制兼容的。但是,如果我只是修改DerivedB
,說我繼承更多接口或添加其他虛擬功能。在最極端的說法中,我從另一個定義InterfaceA
的類繼承了多個繼承。儘管所有這些變化,InterfaceA
仍然保持二進制兼容?
我的假設和經驗到現在是,它是兼容的。我只是尋找這個確認(或反駁,如果不兼容)。
注意:我不關心動態打字或其他投射,我只關心界面功能本身。
另請注意:假設正在使用的編譯器版本是ABI穩定的整體 - 沒有主要的版本更改。
可能[this](http://accu.org/index.php/journals/1718)這篇文章對你很有意思。 – Simon