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以前の内容なので、現在はコア言語および標準ライブラリがよりロバストなイディオムを提供しています。
外部リンク
脚註
下位階層のページ
- Boost
- C++03(JIS C++)からC++23への移行の手引
- C++の変遷
- C++特有の概念
- C++開発環境の整備
- CからC++への移行
- JavaやC Sharpなどの中間コード型言語からC++への移行
- NULL安全
- RAII
- RTTI
- SFINAE
- Uniform initialization
- consteval
- constexpr
- decltype
- final
- nullptr
- override
- using
- はじめに
- アクセス指定子
- アトリビュート
- アライメント
- イテレータ
- インライン関数
- オブジェクトの配列とポインタ及び参照
- オブジェクト指向プログラミング
- キャスト
- キーワード
- クイックツアー
- クラスの定義や継承
- コルーチン
- コンセプト
- コンテナ
- コンパイル時評価
- コードギャラリー
- ジェネリックラムダ
- スコープ
- スマートポインタ
- テンプレート
- テンプレートメタプログラミング
- データ型と変数
- トレイト
- パッケージマネージャ
- フォールディング式
- ポインターと参照
- ムーブキャプチャ
- ムーブセマンティクス
- メモリ安全
- ユースケース集
- ラムダ式
- 三方比較演算子
- 不変性
- 互換性
- 例外処理
- 共用体
- 列挙型と列挙クラス
- 初心者むけ/クラス
- 制御構造
- 名前修飾
- 名前空間
- 型安全
- 型推論
- 式と演算子
- 指定子
- 改廃された技術
- 文字列とstd::string
- 文法の基礎
- 構文の基礎
- 構造体
- 構造体・共用体
- 構造化束縛宣言
- 標準テンプレートライブラリ
- 標準ライブラリ
- 標準ライブラリ/algorithm
- 標準ライブラリ/any
- 標準ライブラリ/array
- 標準ライブラリ/atomic
- 標準ライブラリ/barrier
- 標準ライブラリ/bit
- 標準ライブラリ/bitset
- 標準ライブラリ/cassert
- 標準ライブラリ/cerrno
- 標準ライブラリ/cfenv
- 標準ライブラリ/cfloat
- 標準ライブラリ/charconv
- 標準ライブラリ/chrono
- 標準ライブラリ/climits
- 標準ライブラリ/cmath
- 標準ライブラリ/codecvt
- 標準ライブラリ/compare
- 標準ライブラリ/complex
- 標準ライブラリ/concepts
- 標準ライブラリ/condition variable
- 標準ライブラリ/coroutine
- 標準ライブラリ/csetjmp
- 標準ライブラリ/csignal
- 標準ライブラリ/cstdarg
- 標準ライブラリ/cstddef
- 標準ライブラリ/cstdint
- 標準ライブラリ/cstdio
- 標準ライブラリ/cstdlib
- 標準ライブラリ/ctime
- 標準ライブラリ/deque
- 標準ライブラリ/exception
- 標準ライブラリ/execution
- 標準ライブラリ/expected
- 標準ライブラリ/format
- 標準ライブラリ/forward list
- 標準ライブラリ/fstream
- 標準ライブラリ/functional
- 標準ライブラリ/generator
- 標準ライブラリ/initializer list
- 標準ライブラリ/iomanip
- 標準ライブラリ/ios
- 標準ライブラリ/iosfwd
- 標準ライブラリ/iostream
- 標準ライブラリ/istream
- 標準ライブラリ/iterator
- 標準ライブラリ/limits
- 標準ライブラリ/list
- 標準ライブラリ/map
- 標準ライブラリ/mdspan
- 標準ライブラリ/memory
- 標準ライブラリ/memory resource
- 標準ライブラリ/new
- 標準ライブラリ/numbers
- 標準ライブラリ/numeric
- 標準ライブラリ/optional
- 標準ライブラリ/ostream
- 標準ライブラリ/print
- 標準ライブラリ/queue
- 標準ライブラリ/ranges
- 標準ライブラリ/ratio
- 標準ライブラリ/regex
- 標準ライブラリ/scoped allocator
- 標準ライブラリ/set
- 標準ライブラリ/source location
- 標準ライブラリ/span
- 標準ライブラリ/stack
- 標準ライブラリ/stacktrace
- 標準ライブラリ/stdexcept
- 標準ライブラリ/stdfloat
- 標準ライブラリ/stop token
- 標準ライブラリ/streambuf
- 標準ライブラリ/string
- 標準ライブラリ/string view
- 標準ライブラリ/system error
- 標準ライブラリ/tuple
- 標準ライブラリ/type traits
- 標準ライブラリ/typeindex
- 標準ライブラリ/typeinfo
- 標準ライブラリ/unordered map
- 標準ライブラリ/unordered set
- 標準ライブラリ/utility
- 標準ライブラリ/variant
- 標準ライブラリ/vector
- 標準ライブラリ/version
- 標準ライブラリ/アルゴリズムライブラリ
- 標準ライブラリ/イテレータライブラリ
- 標準ライブラリ/コンセプトライブラリ
- 標準ライブラリ/コンテナライブラリ
- 標準ライブラリ/メタプログラミングライブラリ
- 標準ライブラリ/メモリ管理ライブラリ
- 標準ライブラリ/レンジライブラリ
- 標準ライブラリ/ローカライゼーションライブラリ
- 標準ライブラリ/一般ユーティリティライブラリ
- 標準ライブラリ/並行性サポートライブラリ
- 標準ライブラリ/入出力ライブラリ
- 標準ライブラリ/数値ライブラリ
- 標準ライブラリ/文字列ライブラリ
- 標準ライブラリ/時間ライブラリ
- 標準ライブラリ/正規表現ライブラリ
- 標準ライブラリ/言語サポートライブラリ
- 標準ライブラリ/診断ライブラリ
- 機能テストマクロ
- 演算子と式
- 演算子オーバーロード
- 特殊メンバー関数
- 範囲ベースfor
- 純粋仮想関数
- 記法
- 遅延評価メソッドチェイン
- 配列とベクトル
- 関数
- 関数オーバーロード