C++命名空间使用详细介绍
1.前言在c中为了避免代码名称上所产生冲突引入了命名空间这个东西。命名空间相当于划分出一定的空间为特定的类型函数和变量等的名称也就是标识符提供了一个范围。命名空间之内的标识符访问彼此没有限制命名空间之外的标识符可通过使用每个标识符的完全限定名来访问成员也可通过单个标识符的using声明或命名空间中所有标识符的using指令来访问成员。命名空间可以定义在几个不同的部分中因此命名空间是由几个单独定义的部分组成的。一个命名空间的各个组成部分可以分散在多个文件中。2.定义命名空间的定义使用关键字namespace后跟命名空间的名称。namespace namespace_name{// 代码声明}调用带有命名空间的函数或者变量时需要在前面加上命名空间的名称使用完全限定名。namespace_name::code; // code 可以是变量或函数样例123456789101112131415161718192021222324#includeiostreamusingnamespacestd;namespaceA{voidfunc(){cout A endl;}}// 第二个命名空间namespaceB {voidfunc(){cout B endl;}}intmain(){// 调用第一个命名空间中的函数A::func();// 调用第二个命名空间中的函数B::func();return0;}结果3.using 指令当使用using 指令时便可不用加完全限定名直接访问。这个指令会让编译器直接使用namespace里的所有名称。样例1234567891011121314151617181920212223#includeiostreamusingnamespacestd;namespaceA{voidfunc(){cout A endl;}}// 第二个命名空间namespaceB {voidfunc(){cout B endl;}}usingnamespaceB;intmain(){// 只会调用第二个命名空间中的函数func();return0;}结果4.using 声明使用 using 声明以将一个标识符引入范围1234567891011121314151617181920#includeiostreamusingnamespacestd;namespaceA{classa{public:voidfunc(){cout A endl;}};}usingnamespaceA;A::a aa;intmain(){aa.func();return0;}结果为5.嵌套的命名空间一个命名空间中可以定义另一个命名空间一般形式为123456namespacenamespace_name1 {// 代码声明namespacenamespace_name2 {// 代码声明}}像上列代码如果要访问namespace_name2中的成员我们得使用::运算符来访问// 访问 namespace_name2 中的成员using namespace namespace_name1::namespace_name2;// 访问 namespace_name1 中的成员using namespace namespace_name1;样例123456789101112131415161718192021222324#includeiostreamusingnamespacestd;namespaceA{voidfunc(){cout A endl;}// 第二个命名空间namespaceB{voidfunc(){cout B endl;}}}usingnamespaceA::B;intmain(){// 只会调用第二个命名空间中的函数func();return0;}结果为到此这篇关于C命名空间使用详细介绍的文章就介绍到这了