C++は、C言語をベースに「オブジェクト指向」という考え方を取り入れた言語で、ゲーム開発や高速処理が求められる分野で幅広く利用されています。
本カテゴリでは、C言語の基本を少し理解した方や、これからC++に挑戦してみたい初心者向けに、文法の基礎やオブジェクト指向の仕組みをわかりやすく解説します。
実際に動くサンプルコードを通じて、「C++らしい書き方」を体験しながら、プログラミングの新しい世界を学べます。
導入・基本構文と型
C++の基本とC言語からの移行
- C++とは?特徴・できること・C言語との違い
- はじめてのcoutとcin:画面に表示&キーボード入力
- std::endlと\nの違いとは?改行とバッファflush
- coutの使い方を徹底解説!基本の出力・改行・書式設定
- cinの使い方を徹底解説!数値・文字列の入力から注意点まで
- C言語コードはC++で動く?互換性と非互換ポイント
- 名前空間とは?namespaceの基礎と便利な使い方
- using namespace stdを避けるべき理由
- ヘッダファイルの書き方入門|役割から実践例まで
- インクルードガードの書き方|二重定義防止と#pragma once
- #pragma onceとインクルードガードの違いと使い分け
- 前方宣言のメリットと使い方|コンパイル時間を短縮する
- ソース分割の方法を徹底解説!ヘッダーとcppファイルの作り方
- main関数の書き方:引数(argc/argv)と戻り値
変数・型・キャスト・定数
- 変数の初期化の種類と書き方
- 一様初期化のメリットと波括弧{}を使う理由・注意点
- auto(型推論)の使い方を徹底解説!メリット・注意点
- autoの注意点と正しい使い方|型推論の罠を回避する
- autoとdecltype、decltype(auto)の違いと使い分け
- nullptrとNULLの違いを徹底解説!使い分けと推奨される理由
- nullptrが推奨される本当の理由と使い方
- enum classの使い方とメリット|従来のenumとの違い
- enum classのメリットと使い方|従来のenumとの違い
- #defineとconstの違いと使い分け|定数定義の正しい選び方
- inlineの意味とは?インライン展開の仕組みとメリット
- inline関数とマクロの違いとは?使い分けとメリット
- 暗黙の型変換の注意点と落とし穴|バグを防ぐexplicitの使い方
- L値・R値の違いを徹底解説!右辺値参照とムーブセマンティクス
- Cスタイルキャストはなぜ危険?安全な代替
- static_cast入門|基本文法と安全な使い方
- const_castの正しい使い方とNG例
- reinterpret_castの基本と安全な使い方
メモリ管理 (ポインタ・参照・スマートポインタ)
スマートポインタとRAII (現代的なメモリ管理)
- C++のRAIIとは?メリットや使い方、リソース管理の仕組み
- スマートポインタの種類と使い分け!unique_ptr/shared_ptr
- unique_ptrの使い方完全ガイド|基本から所有権の移動まで
- std::make_uniqueの使い方|newとの違いやメリット
- unique_ptrを戻り値で返す方法|所有権の移動と注意点
- unique_ptrを引数として渡す方法とベストプラクティス
- vectorの使い方:所有権の移動と注意点
- shared_ptrの使い方|基本から実装・注意点まで
- make_sharedの使い方|shared_ptrとの違い
- make_sharedとnewの違いを解説!メリット・デメリットと使い分け
- shared_ptr 参照カウントの仕組みと使い方
- weak_ptrの使い方を徹底解説!循環参照の解決方法とshared_ptrとの違い
- weak_ptr::lockの使い方とshared_ptrへの安全な変換方法
- 循環参照を回避する方法!weak_ptrでメモリリークを防ぐ
- shared_from_thisの正しい使い方と注意点
- enable_shared_from_thisの使い方と注意点
オブジェクト指向プログラミング (OOP)
クラスの定義と基本
- クラス入門:定義から使い方
- structとclassの違いを解説!使い分けの基準と唯一の相違点
- structとclassの違い|デフォルトのアクセス修飾子と継承
- public / private / protectedとは?アクセス修飾子超入門
- protectedの使い方を解説!継承時の挙動や他修飾子との違い
- コンストラクタの使い方入門|書き方・呼び出し
- デフォルトコンストラクタの基本|生成条件や注意点
- コンストラクタの初期化方法まとめ:初期化子リスト
- メンバイニシャライザの使い方とメリット!代入との違い
- 委譲コンストラクタの使い方とメリット|初期化の重複を解消
- explicitの意味とは?暗黙の型変換を禁止する使い方
- explicit指定子の使い方|コンストラクタの暗黙の型変換を防ぐ
- デストラクタの使い方入門|呼ばれるタイミングと書き方
- デストラクタの実行順序|継承・メンバ変数・静的オブジェクトの規則
- thisポインタの使い方と仕組みを徹底解説!活用例や注意点
- constメンバ関数の使い方を徹底解説!mutableや注意点も
- staticメンバの使い方|静的変数・関数の定義と初期化
- staticメンバ変数の初期化場所と方法|C++17対応版
- mutableの使い方を徹底解説!const関数やラムダ式での活用例
クラス設計の応用・イディオム
標準テンプレートライブラリ (STL): コンテナ
標準テンプレートライブラリ (STL): アルゴリズム
文字列処理と正規表現
基本的な文字列操作 (<string>)
入出力とファイルシステム
ファイルシステム (<filesystem>)
- filesystemの使い方!ファイル操作やディレクトリ探索
- パス結合|path::appendと/=演算子の使い方
- ファイル存在確認の方法まとめ|std::filesystem::existsの使い方
- ディレクトリ作成!create_directoryと再帰作成
- directory_iteratorの使い方:ディレクトリ内のファイルを走査する
- ファイルコピー|copy_fileの使い方と上書き・エラー処理
- ファイル移動・名前変更!renameとfilesystemの使い方
- ファイルを削除する方法|remove関数とfilesystemの使い方
- ファイルサイズを取得する方法:filesystemから従来手法まで
- 拡張子を取得する方法まとめ:filesystemと文字列操作
- 親ディレクトリを取得する方法:std::filesystemの使い方
- ファイル更新日時を取得する方法!std::filesystem
- カレントディレクトリを取得する方法!std::filesystem
- 絶対パス取得:canonicalの使い方とabsoluteの違い
- ファイルの権限(permissions)を変更する方法|std::filesystem
