命名空间允许我们更好地处理全局命名空间污染问题,库的作者可以定义一个命名空间从而把库中的名字隐藏在全局命名空间之外。
#include <iostream>
//标准命名空间std,所以下面可以直接使用endl常量
using namespace std;
namespace test_namespace {
class test_class
{
};
void test_func();
const double PI = 3.14;
// 嵌套命名空间
namespace in_namespace {
const double FOO = 1.545;
}
}
// 使用简单的别名
namespace AB = test_namespace::in_namespace;
// using声明
//using test_namespace::PI;
// using指示符
using namespace test_namespace;
int main()
{
// 命名空间成员的访问
cout << test_namespace::PI << endl;
// 通过using声明和指示符都可以访问
cout << PI << endl;
// 嵌套的访问
cout << test_namespace::in_namespace::FOO << endl;
// 通过别名访问
cout << AB::FOO << endl;
return 0;
}