記事 · 全 11 回
C++ プログラミング
メモリレイアウトからモダン C++ の標準までを、下層のマシンを視野に入れながら辿るノート。主な参考書は『C++ Primer Plus』と『CS:APP』。
- 1C++ #1 データとメモリC++ がデータをメモリにどう配置するか。組み込み型とそのサイズ、リテラル、そしてコンパイラが暗黙に行う型変換。2024年1月2日
- 2C++ #2 Struct と Unionstruct と union によるデータの集約。メンバのレイアウト、パディングとアラインメント、そして union が小手先の技ではなく適切な選択になる場面。2024年1月14日
- 3C++ #3 ポインタと配列ポインタが保持するのはアドレスだけ。宣言構文、ポインタ演算、配列とポインタの関係、new / delete による動的確保。2024年1月28日
- 4C++ #4 関数プロトタイプ、三種類の引数渡し、関数ポインタ、インライン化、オーバーロード、テンプレート。そしてそれぞれの実行時コスト。2024年2月11日
- 5C++ #5 オブジェクトとクラスクラスがメモリ上でどう実体化するか。構築と破棄の順序、this ポインタ、初期化リスト、そして const メンバ関数が実際に何を制約するのか。2024年2月25日
- 6C++ #6 継承継承が実際に行っていること。サブオブジェクトのレイアウト、三種類の継承アクセス、コンストラクタ/デストラクタの連鎖、そして菱形継承。2024年3月10日
- 7C++ #7 コピー制御と演算子オーバーロードコピー、ムーブ、演算子オーバーロード。三の規則と五の規則、深いコピーと浅いコピー、そして swap が代入を例外安全にする理由。2024年3月24日
- 8C++ #8 ポリモーフィズム仮想関数と vtable による動的ポリモーフィズム、デストラクタを仮想にすべき理由、そしてテンプレートが無償で与える静的ポリモーフィズム。2024年4月7日
- 9C++ #9 C++11 の新機能C++ の書き方を変えた規格。auto、範囲 for、スマートポインタ、ラムダ、ムーブセマンティクス、nullptr、constexpr、可変長テンプレート。2024年4月21日
- 10C++ #10 C++14 の新機能C++14 はパッチ的な改訂。ジェネリックラムダ、戻り値型推論、make_unique、そして C++11 を使いやすくした小さな修繕。2024年6月9日
- 11C++ #11 C++17 の新機能C++17。構造化束縛、if constexpr、string_view、optional と variant——日々の書き方を実際に変える機能たち。2024年6月23日