質問

クラスのビューのABIは、仮想を含む他の変更が派生クラスで作られていても安定したままですか?

つまり、インターフェイスがあるとします InterfaceA (多くの純粋な仮想関数を備えた抽象クラス)とクラス DerivedB それはそれから継承します。私は、 InterfaceA *. 。私が知りたいのは、インターフェイス自体が変更されない限り、インターフェイスがバイナリ互換性のあるままであるかどうかです。

私が変更した場合、明確にします InterfaceA コードがバイナリに互換性があるとは思っていません。ただし、変更した場合はどうなりますか DerivedB, 、より多くのインターフェイスを継承するか、他の仮想関数を追加するとします。最も極端なことに、私は別のクラスから継承を増やします。 InterfaceA. 。します InterfaceA これらすべての変更にもかかわらず、バイナリ互換性のあるままですか?

私の仮定と経験は、はい、それは互換性があるということです。私はこれの確認を探しています(または互換性がない場合は反論)。

注:動的なタイピングやその他のキャストは気にしません。インターフェイス機能自体のみを気にします。

また、注:使用されているコンパイラバージョンが全体としてABI安定していると仮定します - メジャーバージョンの変更はありません。

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top