C++ は、C と高い互換性が保たれるように設計されています。 C のプログラマは C++ を独自のペースで学習し、必要に応じて C++ の機能を統合することができます。C++ では C の長所や便利な点がさらに強化されていますが、特に重要な点は、システムの構成要素に直接関りを持つ型や演算子など、コンピュータのハードウェアへの効率的なインタフェースが、C と同様 C++ でも継承されていることです。
しかし重要な相違点もいくつかあります。普通の C プログラムを C++ でコンパイルするには、多少の修正が必要です。C から C++ へプログラムを移行する場合に注意すべき事項については、『 C++ 移行ガイド』で説明しています。
C と C++ では、プログラムモジュール間のインタフェースを設計する場合に最も大きな違いがありますが、C++ にはそのインタフェースの設計に使用する C の機能がすべて継承されています。たとえば、C++ モジュールを C モジュールにリンクできるため、C++ のプログラムで C のライブラリを使用することができます。
C と C++ ではこの他多くの細かな相違点があります。C++ には次に示す機能があります。
定義済み定数を使用すると、プリプロセッサを使用せず、プログラムで名前付き定数を使用することができます。
関数プロトタイプを使用する必要があります。
未使用の記憶領域に対する new 演算子と delete 演算子は、指定した型の動的オブジェクトを生成します。
参照は、自動的に間接参照されるポインタであり、変数の別名のような役割を果たします。参照は、関数のパラメータとして使うことができます。
型変換用の特殊な組み込み演算子名が用意されています。
プログラマの定義による自動型変換を許可しています。
変数宣言は、文が出現するあらゆる位置で行えます。変数宣言は、ブロックの先頭だけでなく、if、switch、loop 文のヘッダー内でも行えます。
新しい注釈用区切り文字を使用すると、その行の末尾までが注釈として認識されます。
列挙名やクラス名も自動的に型名になります。
関数のパラメータにデフォルト値を代入できます。
インライン関数を使用すると、関数の呼び出しが関数の本体に置換されます。これにより、マクロを使用することなくプログラムの効率を上げることができます。