**在C++编程中using namespace std;这条语句很常见,其中,namespace就是命名空间,而using是声明,std是命名空间名。
命名空间就是为了解决C++中函数变量的命名冲突所采取的一种措施,能够解决多模块协同开发出现变量函数命名的冲突问题。**
1、using声明及作用域
using namespace name::name;
一旦使用using声明,就可以直接引用命名空间中的成员,而不需要再引用该成员的命名空间。
例:
#include <string>
#include <iostream>
using std::cin; //引用标准库std中的成员cin;
using std::string; //引用标准库std中的成员string;
int main()
{
string temp; //true,string已经声明,可以直接使用
cin>>temp; //true,cin已经声明,可以直接使用
cout<<temp; //false,cout未声明,无法直接使用
std::cout<<temp; //true,通过全名使用cout,
return 0;
}
在using 指令中,using后面必须跟关键字namespace,而且最后必须为命名空间名;using 声明中,关键字后面没有namespace, 后面必须为命名空间的成员名。
#include <iostream>
using namespace std;
namespace nsA{
int var = 12;
}
namespace nsB{
double var = 12.33;
}
int main()
{
下面两个using都只在{}内起作用,去掉{}会出现重复定义的情况
{
using namespace nsA;
cout<<"nsA var="<<var<<endl;
}
{
using namespace nsB;
cout<<"nsB var="<<var<<endl;
}
return 0;
}
2、命名空间定义格式
namespace 命名空间名{
命名空间生命内容
}
例:
#include <iostream>
using namespace std;
namespace nsA
{
void print()
{
cout<<"nsA"<<endl;
}
}
namespace nsB
{
void print()
{
cout<<"nsB"<<endl;
}
}
int main()
{
nsA::print();
nsB::print();
return 0;
}