本文へスキップ
BecomeCoder

C++コース · 第20章 まとめ · レッスン77

C++のまとめ ― これからのモダンC++へ

ローカル実施

導入

長い道のり、おつかれさまでした。C言語に近い基礎から、モダン C++ の実務レベルの文法まで一通り歩いてきました。最後に全体を振り返り、次の一歩を示します。

説明

このコースで学んだことを地図にすると、次のようになります。

flowchart TB
  base["基礎(C言語に近い部分)<br/>変数・制御・関数・配列・ポインタ"]
  base --> str["文字列とコンテナ<br/>string / vector / map / set"]
  str --> oop["オブジェクト指向<br/>class / 継承 / virtual / 演算子"]
  oop --> gen["ジェネリック<br/>テンプレート / STL アルゴリズム / ラムダ"]
  gen --> safe["安全な資源管理<br/>RAII / スマートポインタ / 例外"]
  safe --> modern["モダン機能<br/>optional / enum class / 構造化束縛"]
  modern --> pro["実務とC++20<br/>分離 / variant / constexpr / 並行 / concepts・ranges"]

実務でコードを書くときの指針を、あらためて整理します。

  • 生の配列・生ポインタより、vectorstring・スマートポインタを使う(安全で楽)。
  • 引数は const T& で受けるのが基本。書き換えるときだけ T&
  • 資源は RAII に任せる(Rule of Zero)。new/delete を手で書かない。
  • 定番処理は <algorithm>ranges に任せ、条件はラムダで渡す。
  • 変更しないものには constconstexpr を付ける(const correctness、コンパイル時計算)。

第18章では宣言と定義の分離(ヘッダと実装)、std::variantstd::tupleconstexpr を、第19章では並行処理(std::threadstd::async)と C++20 の大型追加(conceptsrangesstd::formatstd::span)、可変長テンプレートまで扱いました。ここから先も C++ は進化し続けますが、土台はこのコースで身につけた考え方です。

おわりに

この C/C++ コースでは、cout/cin から始めて、変数・制御・関数・配列・ポインタといった基礎、そして stringvectorクラス継承・テンプレート・STL・スマートポインタ・例外、さらに分離・モダンな型・並行処理・C++20 まで、実務で使うモダン C++ を一通り学びました。

ここで身につけた「メモリを意識する感覚」「型と const で安全を守る発想」「RAII による資源管理」は、他の言語を学ぶときにも必ず土台になります。次のステップとして、手元にコンパイラ(Visual Studio や g++/clang)を用意し、このコースで紹介したコードを実際に動かし、改造してみてください。あなたのモダンな開発の旅は、ここからが本番です。