Avatar
omochimetaru 8/2/2019 2:37 AM
そうですね。 親が一個だけの継承に関しては、親子のつながりでvtableを上から埋めていけば、
2:37 AM
アップキャスト用のテーブルを用意しなくても、子のテーブル is 親のテーブルのABI互換性が得られます。
2:38 AM
C++の場合そのへん賢くて、 親が1系統である限りテーブルのオフセットは発生しないけど、 親が2ついたりすると、片方の親へのアップキャスト(static_cast)は、thisのアドレスがズレたりしますよ。 (edited)
2:40 AM
Rustのtrait implも、同じような感じでthisとimpl tableのペアだよって公式文書に書いてあったと思う。