読者です 読者をやめる 読者になる 読者になる

雑記帳

ソフトを中心に雑記を書いてる割とすぐ転職したい28歳。

EssentialCOM(2日目)

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

時間が無いので1ページしか読めてない。(まだ1.6の途中で、3つ目の仮想関数云々の話が続きます。)
というか、コンパイラのことを知らないから、かなり難しくて読みにくい。