第6部: C++の内部的な仕組み¶
「書いたコードが、どうやって動く機械語になり、実行時に何が起きているのか」を扱う章です。UnityのC#では意識しなくてよかった層——だからこそUnity経験者のC++理解の穴になりやすい部分です。
読む順番¶
- main.cpp から CPU命令までの旅(全体像) — まずこれ。この章の地図
- 翻訳単位・ヘッダー・include・前方宣言・ODR
- シンボル・名前修飾・リンケージ・ABI
- オブジェクトファイル・実行ファイル・静的/動的ライブラリ・DLL
- テンプレートの実体化と inline の実際
- vtable・vptr・仮想関数呼び出し
- RTTI・dynamic_cast・例外処理の仕組み
- メモリレイアウト・パディング・アラインメント・エンディアン
- 関数呼び出し・コールスタック・呼出規約・レジスタ
- キャッシュ・分岐予測・SIMD
- コンパイラ最適化・UBの影響・Debug/Release・ゼロコスト抽象化
仕上げに 演習。
この章の約束¶
- 標準の保証と典型実装を区別します。「vtableで実装される」等は標準の要求ではなく主流実装(MSVC/GCC/Clang)の説明です(仮想関数の意味だけが標準で、実装方法は自由)
- 手元で確かめる道具: Compiler Explorer (godbolt.org) にコードを貼るとアセンブリが見えます。この章の内容はすべて自分の目で確認できます