C++の基礎

この章ではC++の基礎を解説します。

C++はC言語を拡張した言語で、C言語の上位互換言語です。
基本的な文法はほぼC言語と共通で、C言語的な書き方とC++的な書き方をひとつのコード内で混在させることも可能です。

C++はC言語をよりパワフルかつ柔軟にした言語です。
C言語と最も異なるのはクラスという機能を提供する点です。
これによりオブジェクト指向というプログラムの設計方法ができるようになっています。
(その分、より複雑になっています)

この章ではC++の機能を解説するので、C言語の知識が全くないという人は先にC言語から読んで、基本的な文法などはマスターしておいてください。
C言語と共通する機能、例えば関数の定義方法やif文などの制御構文の解説はしません。

ソースファイルの拡張子は「.cpp」にしてください。
「.c」はC言語のソースファイル用の拡張子で、コンパイラによってはC++の機能が使用できないものがあります。
(Visual C++では「.c」はC言語として、「.cpp」はC++言語として扱われます。)

ヘッダファイルはC言語と同じ「.h」で構いませんが、C++のヘッダファイルであることを明確にするために「.hpp」を使用することもできます。

C++のバージョン

C++は国際規格化されていて、最も古い標準規格は1998年のものです。
このバージョンのC++はC++98と呼ばれています。

以降は2003年版のC++03、2011年版のC++11、2014年版のC++14、2017年版のC++17、2020年版のC++20があります。
Visual Studioなどの各コンパイラも基本的にはこのバージョンに合わせて機能が改正されていますが、対応状況はコンパイラによりまちまちです。
例えば2014年以降にリリースされたコンパイラだからといってC++14の機能にすべて対応しているわけではなく、一部の機能だけの対応であったりコンパイラオプションを指定することで有効になったりします。

基本的には新しいバージョンのコンパイラでも古いコードはそのまま動きます。
しかし、バージョンアップによって動作が変更されたり機能が廃止されることもあるので、完全な後方互換があることは保証されていません。

なお、C++11では大幅な改定があり、様々な便利な機能が盛り込まれています。
C++03までは特別な理由がない限りは使用する必要はありません。

ネット上の昔の記事では「C++0x」という規格について書かれていることがあります。
これはC++11のことで、C++11規格は2009年中までに標準化される予定であったためです。