この章の概要です。
まずは、C++ のもっとも小さなサンプルプログラムを取り上げます。
int main()
{
}
実行結果:
C++ として有効なもっとも小さいプログラムは、上記のようになります。実行しても何もせずに終了します。
C言語と同様に、プログラムの開始位置となるので、main関数は必須です。引数と戻り値の組み合わせは、以下のいずれかです。
コンパイラが独自に、他の形の main関数を許している可能性はあります。
仮引数が空になっている方は、C言語において void を指定していたときと同じ意味です。このように C++ では、仮引数の void は省略できます。void と明示的に書いても構いませんが、一般的に C++ では省略します。
引数がある方の main関数は、コマンドライン引数を受け取るための形式です。詳細は、C言語編第45章を参照してください。
また、C++ では、main関数内の
return文は省略することができ、その場合、関数の末尾に
return 0;
と書いたときと同じ結果になります。これは一般的とまでは言えないと思いますが、本サイトの
C++プログラムでは省略することにします。
【上級】C言語と違って(C言語編第53章)、main関数は再帰呼び出しできません。
【上級】main関数はオーバーロード(第10章)できません。
今度は、C++版の Hello, Worldプログラムを作ってみましょう。
C言語版の Hello, Worldプログラムは、C言語編第2章で説明しています。
まず、C++ は、C言語の機能が使えるので、C言語と同じような書き方ができます。
#include <stdio.h>
int main()
{
("Hello, World");
puts}
実行結果:
Hello, World
しかし、C++ では <stdio.h> を #include するという行為自体が、あまり一般的ではありません。通常、次のように書きます。
#include <cstdio>
int main()
{
std::puts("Hello, World");
}
実行結果:
Hello, World
この違いについての詳しい解説は、【標準ライブラリ】第1章を参照してください。
さらに言えば、C++ には新たな入出力機能があるので、そちらを使うことが、より C++らしい書き方です。次のようになります。
#include <iostream>
int main()
{
std::cout << "Hello, World" << std::endl;
}
実行結果:
Hello, World
<<演算子が使われていますが、もちろんシフト演算(C言語編第49章参照)をしているわけではありません。C++ には、演算子を適用する型に応じて、効果を変える方法があるので、この機能を使って意味を変更しているのです。
【上級】この機能は、演算子のオーバーロードと呼ばれます。
また、std::cout は標準出力ストリームを意味しており、std::endl は改行文字+フラッシュを意味します。これらを使うためには、iostream というヘッダを #include する必要があります。
【上級】std::cout や std::endl については、【標準ライブラリ】第16章で取り上げています。
このプログラムの処理のイメージは、「“Hello, World”」と「改行文字 + フラッシュするという指令」を標準出力ストリームへ送っているということです。どこかへ「送る」というイメージを、<<演算子で表現している訳です。左方向へ送っているように見えますね?
C++ では、C言語(C95まで) の /* ~ */ という形式のコメントのほかに、// 形式のコメントが使えます。
C言語でも、C99規格からは // 形式のコメントを使えます(C言語編第5章)。
// 形式のコメントは、「//」からその行の行末までをコメント化します。複数行をまとめてコメントにできませんが、終端の記号を書かなくて良くなります。大抵のコメントは、1行で完結するので、入力の手間が減らせます。
以下は使い方の例を示したものです。
#include <iostream>
int main()
{
// 下の文は、puts("Hello, World"); と同じ結果になる
std::cout << "Hello, World" << std::endl;
}
実行結果:
Hello, World
C++プログラマーのほとんどは、複数行をまとめてコメントアウトしたり、文の途中を部分的にコメントアウトしたりするのでなければ、//コメントの方を使います。
複数行のコメントアウトには、#if 0 ~ #endif を使った方が、入れ子の間違いを防げて良いとも言われています。
問題① iostreamヘッダの機能を使う形で、実行結果が次のようになるプログラムを作成してください。
Hello,
World
問題② コマンドライン引数を1行に1つずつ、標準出力へ出力するプログラムを作成してください。
C++編での記述に合わせる形に修正。
新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |