C++コーディング標準(C++コアガイドライン)
C++コアガイドラインから派生した最新のC++(C++17/20/23)の包括的なコーディング標準。タイプセーフティ、リソースセーフティ、不変性、明確性を強制します。
使用時期
- 新しいC++コードを書く(クラス、関数、テンプレート)
- 既存のC++コードをレビューまたはリファクタリング
- C++プロジェクトでアーキテクチャ決定を行う
- C++コードベース全体で一貫性のあるスタイルを実施
- 言語機能の選択(例:
enumvsenum class、生ポインタ対スマートポインタ)
クロスカッティング原則
これらのテーマはガイドライン全体に繰り返され、基礎を形成:
- 至るところにRAII:リソースライフタイムをオブジェクトライフタイムにバインド
- デフォルトで不変性:
const/constexprで開始;変更可能性は例外 - タイプセーフティ:型システムを使用してコンパイル時にエラーを防止
- 意図を表現:名前、タイプ、概念は目的を伝える必要があります
- 複雑性を最小化:シンプルなコードが正しいコード
- 値セマンティクス対ポインタセマンティクス:値で返すか、スコープ付きオブジェクトを好む
主要なルール
スマートポインタと所有権
現代的なC++では、生ポインタの代わりにスマートポインタを使用:
std::unique_ptr<T>単一所有者向けstd::shared_ptr<T>共有所有権向けstd::weak_ptr<T>循環参照を回避するため


