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 型と見なされました。

スポンサーリンク