C++
(CPlusPlus から転送)
本書は、C++プログラミング言語の初心者から中級・上級者までを対象にした、段階的な学習ガイドです。C++は強力で柔軟な言語であり、システムプログラミングからゲーム開発、科学技術計算まで幅広い分野で活用されています。しかし、その豊富な機能と複雑な構文から、学び始める際には戸惑うことも少なくありません。
本書の前半では、初心者がC++の基礎を理解し、実際にコードを書く力を身につけることを目指しています。基本的な文法やデータ型、制御構造、関数といった基礎的なトピックを、具体的な例とともにわかりやすく解説します。また、オブジェクト指向プログラミングや標準ライブラリの使い方についても丁寧に説明し、実践的なスキルを養います。
後半では、中級・上級者向けに、C++特有の高度な概念や最新の技術について詳しく解説します。クラスの継承や関数オーバーロード、スマートポインタ、ラムダ式、テンプレート、例外処理など、より複雑なトピックを扱い、実践的なアプリケーションの開発に必要な知識を提供します。
さらに、附録には、C++の歴史や開発環境の整備、他の言語からの移行ガイド、機能テストマクロ、参考文献など、実務に役立つ情報を豊富に盛り込みました。特に、C++03からC++23への移行に関する手引きは、最新の標準に対応したプログラムを書く上で非常に有用です。
C++は、しっかりとした基礎を築き、継続的に学び続けることで、その真価を発揮する言語です。本書が、皆様のC++学習の道しるべとなり、実際のプロジェクトに役立つ知識とスキルを提供できることを願っております。
初心者むけの内容
- 目次
リファレンス
中級〜上級者むけの内容
- 目次
- C++特有の概念
- クラスの定義や継承
- アクセス指定子
- 特殊メンバー関数
- 純粋仮想関数
- override (C++11:core) ⇒ /キーワード#override
- final (C++11:core) ⇒ /キーワード#final
- RAII(Resource Acquisition Is Initialization)
- テンプレートの基礎
- 関数オーバーロード
- 演算子オーバーロード
- 名前修飾
- コンパイル時評価
- インライン関数
- constexpr(C++11:core) ⇒ /キーワード#constexpr
- consteval(C++20:core) ⇒ /キーワード#consteval
- アトリビュート
- アライメント
- 不変性
- ムーブセマンティクス
- スマートポインタ
- 型推論
- RTTI: Run-Time Type Information typeid
- コンテナ
- 範囲ベースfor
- トレイト
- コンセプト
- decltype ⇒ /キーワード#decltype
- using ⇒ /キーワード#using
- ラムダ式
- ジェネリックラムダ
- ムーブキャプチャ
- フォールディング式
- nullptr ⇒ /キーワード#nullptr
- Uniform initialization (C++17:core)
- 構造化束縛宣言 (C++17:core)
- テンプレートメタプログラミング
- SFINAE: Substitution Failure Is Not An Error -- テンプレートの置換中に失敗が発生した場合に、エラーを生成せずに代替処理を行う。
- 例外処理
- 名前空間
- 三方比較演算子
<=>
(C++20:core) - コルーチン
<=>
(C++20:core) - 標準テンプレートライブラリ(STL; Standard Template Library)
附録
参考文献
- C++ - Standards. ISO/IEC. (2024-01-17) .
- Working Draft, Standard for Programming Language C++. ISO/IEC. (2023-05-10) .
関連書籍
- More C++ Idioms -- C++11以前の内容なので、現在はコア言語および標準ライブラリがよりロバストなイディオムを提供しています。