C++ 概要

C++ は、静的型付けであり、コンパイル型で、汎用的で、大文字と小文字を区別し、自由形式(フリーフォーム)のプログラミング言語です。手続き型プログラミング、オブジェクト指向プログラミング、ジェネリックプログラミングをサポートしています。

C++ は一種の中級言語であり、高級言語と低級言語の特徴を併せ持っています。

C++ は、1979年にニュージャージー州マレーヒルのベル研究所で Bjarne Stroustrup によって設計開発が開始されました。C言語をさらに拡張・改良したもので、当初は「クラス付きのC」と命名され、その後、1983年に C++ と改名されました。

C++ は C のスーパーセットであり、実際、有効な C プログラムはすべて有効な C++ プログラムでもあります。

注意:静的型付け言語では、型チェックは実行時ではなくコンパイル時に実行されます。

オブジェクト指向プログラミング

C++ はオブジェクト指向プログラミングを完全にサポートしており、オブジェクト指向開発の4大特性には次のものがあります。

  • カプセル化(Encapsulation):カプセル化とは、データとメソッドをひとまとめにし、外部に実装の詳細を隠して、外部に提供するインターフェースだけを公開することです。これにより、安全性、信頼性、柔軟性を高めることができます。

  • 継承(Inheritance):継承とは、既存のクラスから新しいクラスを派生させることで、新しいクラスは既存のクラスの属性とメソッドを持ち、それらの属性とメソッドを拡張または変更することができます。これにより、コードの再利用性と拡張性を高めることができます。

  • 多態性(Polymorphism):多態性とは、同じ操作が異なるオブジェクトに対して作用するとき、異なる解釈と実装が可能であることを指します。インターフェースまたは継承によって実装でき、コードの柔軟性と可読性を高めることができます。

  • 抽象化(Abstraction):抽象化とは、具体的なインスタンスから共通の特徴を抽出して、抽象クラスまたはインターフェースを形成し、コードの再利用と拡張を容易にすることです。抽象クラスとインターフェースにより、プログラマーは高レベルの設計とビジネスロジックに集中でき、低レベルの実装の詳細を気にする必要がありません。

標準ライブラリ

標準の C++ は、次の3つの重要な部分で構成されています。

  • コア言語:変数、データ型、定数など、すべてのビルディングブロックを提供します。
  • C++ 標準ライブラリ:ファイルや文字列などを操作するための多数の関数を提供します。
  • 標準テンプレートライブラリ(STL):データ構造などを操作するための多数のメソッドを提供します。

ANSI 標準

ANSI 標準は、C++ の移植性を保証するためのものです。つまり、あなたが書いたコードが Mac、UNIX、Windows、Alpha コンピュータでコンパイルできることを保証します。

ANSI 標準は長い間安定して使用されてきたため、主要な C++ コンパイラの製造元はすべて ANSI 標準をサポートしています。

C++ を学ぶ

C++ を学ぶ際、重要なのは概念を理解することであり、言語の技術的な詳細に深入りすべきではありません。

プログラミング言語を学ぶ目的は、より優れたプログラマーになることであり、つまり、新しいシステムをより効率的に設計・実装し、既存のシステムを保守できるようになることです。

C++ は複数のプログラミングスタイルをサポートしています。Fortran、C、Smalltalk など、任意の言語のプログラミングスタイルを使用してコードを書くことができます。各スタイルは、実行時の時間効率と空間効率を効果的に保証します。

C++ の使用

C++ 言語は、多くの業界や分野で広く応用されています。以下に例を示します。

  • ゲーム開発:C++ は、ゲーム開発分野で最も一般的に使用されるプログラミング言語の一つです。高いパフォーマンスとハードウェアを直接制御する能力を備えているからです。Unreal Engine や Unity などの主要なゲームエンジンの多くは C++ で書かれています。

  • 組み込みシステム開発:C++ は、スマートフォン、自動車、ロボット、家電などの分野で重要な役割を果たすことができます。組み込みシステムは通常、厳しいリソース制約とリアルタイム要件があるため、C++ の高いパフォーマンスとメモリ制御機能は非常に有用です。

  • 金融分野:C++ は、高頻度取引、アルゴリズム取引、リスク管理などの分野で広く応用されています。これらのアプリケーションは高いパフォーマンスとハードウェアの直接制御を必要とするため、C++ 言語は適切な選択肢です。

  • グラフィックス・画像処理:C++ は、コンピュータビジョン、コンピュータグラフィックス、人工知能などの分野で、グラフィックス・画像処理アプリケーションの開発に使用できます。これらのアプリケーションは高い計算能力とハードウェアの制御を必要とするため、C++ は優れた選択肢です。

  • 科学計算と数値解析:C++ は、数値シミュレーションや高性能計算などの分野で、科学計算や数値解析のアプリケーション開発に使用できます。これらのアプリケーションは高い計算能力とハードウェアの直接制御を必要とするため、C++ 言語は優れた選択肢です。


標準化

リリース時期 通称 備考
2020 C++20, C++2a ISO/IEC 14882:2020
2017 C++17 第5のC++標準
2017 coroutines TS コルーチンライブラリ拡張
2017 ranges TS 範囲(レンジ)機構を提供
2017 library fundamentals TS 標準ライブラリ拡張
2016 concurrency TS 並行計算のための拡張
2015 concepts TS コンパイル時情報を最適化するためのコンセプトライブラリ
2015 TM TS トランザクショナルメモリ操作
2015 parallelism TS 並列計算のための拡張
2015 filesystem TS ファイルシステム
2014 C++14 第4のC++標準
2011 - 10進浮動小数点数の拡張
2011 C++11 第3のC++標準
2010 - 数学関数の拡張
2007 C++TR1 C++ テクニカルレポート:ライブラリ拡張
2006 - C++ 性能テクニカルレポート
2003 C++03 第2のC++標準
1998 C++98 第1のC++標準
その他の拡張