パソコンでプログラミングしよう ウィンドウズC++プログラミング環境の構築
1.7.5.3(3)
本サイトは移転しました。旧アドレスからのリダイレクトは2025年03月31日(月)まで有効です。
🛈
C++

C++は汎用プログラミング言語のひとつである。

その他の外部情報

本サイトでの解釈

本サイトはプログラミング言語としてC++を使用する。

C++規格書

C++規格書は有料だが2011年版、2014年版、2017年版、2020年版、2023年版のドラフトは無料で入手できる。本サイトは各規格に対応するドラフトをC++ - Standardsに依るが、最も正式版に近いドラフトではないかもしれない。規格参照は特に断らない限りC++17ドラフト版(N4659)を用いる。

策定中の2026年版最新ドラフトは以下とされる。

C++規格はC言語標準ライブラリを含むがC++規格書はその内容を記述しない。C言語規格書の2011年版ドラフトをC言語標準ライブラリ参照用として示す。

C言語とC++

C++はユニックスライクを記述するC言語の拡張版と言える。両者は独立して規格化されるため完全なC言語上位互換ではないが、現実のプログラミングで互換性が問題となることは少ない。一般にC言語にオブジェクト指向プログラミングを容易とする構文を追加したものとされるが、拡張はそれを超えはるかに膨大である。C11規格書(N1570)683ページに対しC++17規格書(N4659)1608ページであり、しかも後者はC言語の標準ライブラリ472ページ分をC言語規格書を参照するものとして含まない。

C言語はアセンブラ(CPU命令を可読文字列に置き換えただけのもの)の次に単純な文法を持つ言語の一つだが、C++は最も複雑な文法を持つ言語の一つと言える。C++がC言語の上位互換である事は従って第一の矛盾だが、その後の拡張も規格レベルで統一性を欠く事が多い。本サイトはこの矛盾を抱える言語(Matthew Wilson, Imperfect C++, Boston, Addison-Wesley, 2005, pp.xxi-xxv)を選択する。

  • メモリ操作やオペレーティングシステム操作(システムコール)を直接行える(最も深いレベルの内部構造が暴露されている)。
  • 高度な抽象化プログラミングを可能とする文法を備える(様々なレベルの内部構造を隠蔽できる)。