C++ 入門
C++ について
C++ は,C の拡張として 1980 年代に開発された,オブジェクト指向言語です。
多様なプログラミングパラダイムをサポートした,マルチパラダイム言語でもあります。
C の上位互換言語であり,C のコードの大部分は C++ のコンパイラでもコンパイルできます。
規格
最初に C++ が ISO 標準化されたのは,1998 年の C++98 です。
その後,2003 年に C++03,2007 年に C++TR1 が策定されました。
最新の規格は,2011 年に策定された C++11 です。
複雑な言語仕様と厖大な標準ライブラリのために,C++11 の規格書は約 1,300 ページに及びます。
Hello World
次のプログラムは,C++ の Hello World プログラムです。
このソースコードを hello.cpp または hello.cc といった名前のファイルに保存し,コンパイルします。
#include <iostream>
int main()
{
std::cout << "hello, world" << std::endl; // 文字列を出力
return 0; // 実行環境に 0 を返す
}
生成された実行可能ファイルを走らせると,次のように出力されます。
<b>[出力]</b>
hello, world
コメント
C からのブロックコメント /* ... */ に加え,// から行末までの行コメントが利用できます。
ヘッダファイル
ヘッダファイル iostream は,標準入出力に関するクラスの宣言等を含みます。
C++ の標準ヘッダファイルは,拡張子を持ちません。
自作ヘッダファイルの拡張子には,.h の他に .hh, .hpp, .hxx などが使われます。
C の標準ヘッダファイル hoge.h は,C++ では choge という名前で提供されます。
C の標準関数 printf を用いて Hello World プログラムを書くなら,次のようになります。
#include <cstdio>
int main()
{
printf("hello, world\n");
return 0;
}
名前空間
std::cout の std は名前空間 (namespace) と呼ばれ,名前の衝突を防ぐ目的で用いられます。
std::cout は次のように宣言されているものと考えることができます。
namespace std {
// ここに cout の宣言がある
}
名前空間については,第 2 章 で再び説明します。
文字列出力
std::cout (console out) は,標準出力を表すオブジェクトです。
std::cout に対し << 演算子を用いると,演算子の右辺の値を標準出力に出力します。
std::endl はマニピュレータ (manipulator) または操作子と呼ばれるもので,改行文字を出力し,バッファをフラッシュする役割を持ちます。
これら入出力に関する操作は,第 4 章 詳細に説明します。
関数の記述
関数定義,関数プロトタイプの引数リストを () と書くと,C++ では (void) と書いたのと等価になります。
ちなみに,C では引数型の不明な関数と見なされました。
C++ では関数定義の返却型を省略できません。
ちなみに,C では返却型を省略すると int 型と見なされました。