名空间(namespace)
使用名空间(namespaces)我们可以将一组全局范围有效的类、对象或函数组织到一个名字下面。就是它将全局范围分割成许多子域范围,每个子域范围叫做一个名空间(namespaces)
语法:
namespace identifier
{
named_entities
}
identifier 是一个有效的标示符,named_entities 是该名空间包含的一组类、对象和函数例如:
namespace myNamespace
{
int a, b;
}
要想在这个名空间外面访问这两个变量,我们必须使用范围操作符::
myNamespace::a
myNamespace::b
而且名空间还可以避免全局对象或函数有可能重名而造成重复定义的错误,例如:
//namespaces #include <iostream> using namespace std; namespace foo { int value() { return 5; } } namespace bar { const double pi = 3.1416; double value() { return 2*pi; } } int main () { cout << foo::value() << '\n'; cout << bar::value() << '\n'; cout << bar::pi << '\n'; return 0; }
输出:
5
6.2832
3.1416
两个都叫做value函数同时存在,一个在名空间foo 下面定义,另一个在 bar下面定义,由于我们使用了名空间,这里不会产生重复定义的错误。
一个代码的两端也可以分开写在同一个名空间下,如:
namespace foo { int a; } namespace bar { int b; } namespace foo { int c; }
变量a和c在同一个名空间foo下,b在bar下。