名前空間(namespace)

変数名やクラス名,関数名などの衝突を避ける仕組み.
名前のスコープをつくる.

namespace <name>{
  ...
}

名前を取り込む.

using namespace <name>;
using <name>::<member>;

名前空間はファイルをわたって分割も可能.

FileA

namespace ringo{
  int ringo;
}

FileB

namespace ringo{
  int apple;
}

名前空間は他のスコープの外に記述しなければならない.
ただし,名前空間のネストはできる.

無名名前空間(unnamed namespace)
そのファイル内からは修飾子無しで参照できる.
でも,そとからはできない.

ヘッダはstd名前空間に追加される.