命名空间是C++对同名函数与成员提供的解决方案,众所周知,C语言中无法定义同名的变量,函数。C++命名空间可以合理地规避这个问题。
#include <iostream>
using namespace std;
namespace stu1
{
void sort()
{
cout << "stu1" << endl;
}
}
namespace stu2
{
void sort()
{
cout << "stu2" << endl;
}
}
int main(void)
{
stu1::sort();
stu2::sort();//法1
using namespace stu1;
sort();//法2,弊端是会同其他命名空间产生歧义,慎用。
//using namespace stu2;
//sort();
//会产生歧义需要关闭其中一个命名空间
system("pause");
return 0;
}
以上是关于命名空间的介绍using namespace表示在相关作用域开启了该命名空间。如果不希望在该作用域长期可见,推荐采用stu1::sort()的用法,简单好用,避免歧义。
另外有一种非主流用法using stu1::sort()常用于对命名空间中的某一个成员做作用域声明,类似于法1,不推荐使用。