EssentialCOM(2日目)
- 1.6 バイナリインターフェースとしての抽象基底クラス
- インターフェースと実装の分離テクニックは、C++のコンパイラ/リンカの互換性問題を解決できるが、少し工夫が必要。
- 互換性問題のおさらい。以下の2つを各コンパイラがまちまちにやっているから起こる
- 実行時に言語機能をどのように表現するか
- リンク時にシンボル名をどのようにひょうげんするか
- つまり、この2つを上手く隠蔽出来れば良い。
- 隠蔽するには逆に、コンパイラ依存ではない部分を知る必要がある。
- 一つは、Cスタイル構造体のような複合型の実行時表現。
- 一つは、関数引数を同じ順番で渡し、スタックのクリーンアップ手順も同じこと。
- 一つは、特定プラットフォーム上のC++の仮想関数呼び出しの実装。(※コレが最も重要)
時間が無いので1ページしか読めてない。(まだ1.6の途中で、3つ目の仮想関数云々の話が続きます。)
というか、コンパイラのことを知らないから、かなり難しくて読みにくい。