先頭へ戻る

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

Programming Place Plus トップページ -- C++編

先頭へ戻る

C++編で扱っている C++ は 2003年に登場した C++03 という、とても古いバージョンのものです。C++ はその後、C++11 -> C++14 -> C++17 -> C++20 と更新されており、今後も 3年ごとに更新されます。
なかでも C++11 での更新は非常に大きなものであり、これから C++ の学習を始めるのなら、C++11 よりも古いバージョンを対象にするべきではありません。特に事情がないなら、新しい C++ を学んでください。
当サイトでは、C++14 をベースにした新C++編を作成中ですが、今のところ、C++11 以降の C++ を詳しく解説できているコンテンツはありません。

この章の概要

この章の概要です。


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

最小の 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 に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー