C++命名空间的定义:
namespace name { … }
C++命名空间的使用:
使用整个命名空间:using namespace name;
使用命名空间中的变量:using name::variable;
使用默认命名空间中的变量:::variable
默认情况下可以直接使用默 认命名空间中的所有标识符
注意:
在C++中的命名空间的使用是有两种机制:using声明和using编译指令
using声明: using name::variable
using编译指令:using namespace name
注意这两种机制的区别:using声明是直接声明使用name空间中的变量,而using编译可以使用整个name命名空间中的所有
使用了using声明,其实就相当于直接就使用该变量的内存,可以直接使用该变量,如:
#include "iostream"
using namespace std;
namespace namespaceA
{
int a = 10;
}
void main()
{
using namespaceA::a;
cout<< a <<endl;
system('pause');
}
using编译指令:可以直接使用这个命名空间中的所有
#include "iostream"
using namespace std;
namespace namespaceA
{
int a = 10;
}
void main()
{
using namespace namespaceA;
cout<< a <<endl;
system('pause');
}
但是需要注意:如果同时使用using两个命名空间,但是两个命名空间中存在的同一名称的变量,需要加上命名空间符号,否则会有冲突,如:
namespace namespaceA
{
int a = 10;
}
namespace namespaceB
{
int a = 20;
namespace namespaceC
{
struct Teacher
{
char name[32];
int age ;
};
}
}
//4 使用命名空间
//
void main()
{
using namespace namespaceA;
using namespace namespaceB;
cout<<namespaceA::a<<endl; //因为namespaceA和namespaceB两个命名空间中都存在变量a,因此
//直接写a是会出编译错误的,需要加上命名空间前缀
cout<<namespaceB::a<<endl;
//显示的, 写全
{
//namespaceB::namespaceC::Teacher t1;
//t1.age = 33;
}
using namespaceB::namespaceC::Teacher ;
Teacher t2;
t2.age = 36;
system("pause");
}