C++編【言語解説】 第1章 Hello, Worldプログラム

先頭へ戻る

この章と同じ(または似た)情報を扱うページが、Modern C++編 (C++11/14/17 対応) の以下の章にあります。

この章の概要

この章の概要です。


関連する話題が、以下のページにあります。

最小の C++プログラム

まずは、C++ の最も小さなサンプルプログラムを取り上げます。

int main()
{
}

実行結果:




C++ として有効な最も小さいプログラムは、上記のようになります。実行しても何もせずに終了します。

C言語と同様に、処理の開始点は main関数になるので、これは必須です。引数と戻り値の組み合わせは、以下のいずれかです。

main関数の戻り値の型を int 以外にすることは実装依存です。

仮引数が空になっているのは、C言語において void を指定していたときと同じ意味です。このように C++ では、仮引数の void は省略できます。void と明示的に書いても構いませんが、一般的に C++ では省略します。

引数がある方の main関数の意味は、C言語編第45章を参照してください。

また、C++ では、main関数内の return文は省略でき、省略した場合は、関数の末尾に return 0; と書いたときと同じ結果になります。これは一般的とまでは言えないと思いますが、本サイトの C++プログラムでは省略することにします。

C言語と違って(C言語編第53章)、main関数は再帰呼び出しできません。

main関数はオーバーロード(第8章)できません。

Hello, Worldプログラム

今度は、C++ の Hello, Worldプログラムを作ってみましょう。

C言語での Hello, Worldプログラムを、C言語編第2章で説明しています。

まず、C++ は、C言語の機能が使えるので、C言語と同じような書き方ができます。

#include <stdio.h>

int main()
{
    puts("Hello, World");
}

実行結果:

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++ には、演算子を適用する型に応じて、効果を変える方法があるので、この機能を使って意味を変更しているのです。

この機能は、演算子のオーバーロードと呼ばれます。第19章参照で取り上げます。

また、std::cout は標準出力ストリームを意味しており、std::endl は改行文字+フラッシュを意味します。これらを使うためには、iostream というヘッダを #include する必要があります。

std::cout や std::endl については、【標準ライブラリ】第27章で取り上げています。

このプログラムの処理のイメージは、「"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つずつ、標準出力へ出力するプログラムを作成してください。


解答ページはこちら

参考リンク



更新履歴

'2018/7/3 全体的に見直し修正。主に【補足】【上級】を補った。

'2013/2/11 新規作成。



前の章へ (第0章 はじめに)

次の章へ (第2章 C言語との差異)

C++編のトップページへ

Programming Place Plus のトップページへ


はてなブックマーク Pocket に保存 Twitter でツイート Twitter をフォロー
Facebook でシェア Google+ で共有 LINE で送る rss1.0 取得ボタン RSS
管理者情報 プライバシーポリシー