C++プログラミングの全体像を掴む章へようこそ! 🎉 この章では、あなたがこれまでに培ってきたプログラミングの知識を土台に、C++ならではの特徴や文化に触れていきます。他の言語との違いを意識しながら、まずは「ソースコードを書き、コンパイルして実行する」というC++の基本的な開発フローを体験しましょう。
C++は、C言語を拡張して作られた、非常にパワフルで汎用性の高いプログラミング言語です。その歴史は古く、1983年にBjarne Stroustrupによって開発が始まりました。
他の言語と比較したC++の特徴は以下の通りです。
その高いパフォーマンスと柔軟性から、C++は以下のような幅広い分野の第一線で活躍しています。
C++プログラムを実行するには、コンパイラが必要です。コンパイラは、人間が書いたC++のソースコードを、コンピュータが理解できる機械語に翻訳するツールです。
このウェブサイト上ではブラウザ上でコードを編集し実行できる環境を提供しており、特別なセットアップは不要です。しかし、ローカル環境でC++を学びたい場合は、以下のようなコンパイラとIDE(統合開発環境)をインストールすることをお勧めします。
xcode-select --install
を実行し、Xcode Command Line Tools をインストールします。これにはClangコンパイラが含まれます。エディタは Visual Studio Code がおすすめです。sudo apt update && sudo apt install build-essential g++
を実行してGCCコンパイラをインストールします。エディタは Visual Studio Code がおすすめです。環境が整ったら、さっそく定番の "Hello, World!" プログラムを作成し、C++開発の流れを掴みましょう。
main.cpp
という名前でファイルを作成し、以下のコードを記述してください。
このコードを実行するには、まずコンパイルして実行可能ファイルを生成する必要があります。ターミナル(Windowsの場合はコマンドプロンプトやPowerShell)で以下のコマンドを実行します。
# g++ (GCC) または clang++ (Clang) を使ってコンパイル
# -o main は出力ファイル名を main にするという意味
g++ main.cpp -o main
# 生成された実行可能ファイルを実行
./main
# Visual C++ (MSVC) を使う場合
cl main.cpp /Fe:main.exe
# 生成された実行可能ファイルを実行
main.exe
このウェブサイト上の実行環境で動かす場合は、以下の実行ボタンをクリックしてください。 実行すると、ターミナルに以下のように表示されるはずです。
PythonやJavaScriptのようなインタプリタ言語とは異なり、C++では「コンパイル」という一手間が必要です。このステップにより、実行前にコード全体がチェックされ、高速なネイティブコードが生成されます。
先ほどの "Hello, World!" プログラムには、C++の基本的な要素が詰まっています。一つずつ見ていきましょう。
#include
は、他のファイルに書かれた機能を利用するためのプリプロセッサ命令です。ここでは、コンソールへの入出力機能を提供する iostream
という標準ライブラリのヘッダファイルを読み込んでいます。これにより、std::cout
などが使えるようになります。
< >
で囲む: 標準ライブラリのヘッダファイルをインクルードする場合" "
で囲む: 自分で作成したヘッダファイルをインクルードする場合 (後の章で学びます)main
関数は、C++プログラムのエントリーポイント(実行開始点)です。OSはプログラムを実行するとき、まずこのmain
関数を呼び出します。
int
: main
関数が整数 (integer) の値を返すことを示します。この戻り値はプログラムの終了ステータスとしてOSに渡され、0
は正常終了を意味するのが慣例です。()
: 関数が引数を取らないことを示しています。(引数を取ることも可能です)std::cout
: "character output stream" の略で、コンソールへの標準出力を担当します。
<<
: ストリーム挿入演算子と呼ばれ、右側のデータを左側のストリーム(ここでは std::cout
)に流し込むイメージです。std::endl
: "end line" の略で、改行を出力し、出力バッファをフラッシュ(強制的に出力)します。std::
: cout
や endl
が std
という名前空間 (namespace) に属していることを示します。名前空間は、大規模なプログラムで関数や変数の名前が衝突するのを防ぐための仕組みです。std
はC++の標準ライブラリが定義されている名前空間です。main
関数から実行が始まります。#include
で外部ライブラリの機能を読み込み、namespace
で名前の衝突を避けます。これであなたもC++プログラマの仲間入りです!次の章では、C++の根幹をなす型システムとメモリの仕組みについて学んでいきましょう。