多语言展示
当前在线:1667今日阅读:39今日分享:10

C++中namespace的使用

命名空间是一个逻辑单元,他可以包含在逻辑上相关的函数、变量和子命名空间.注意,子命名空间只能在命名空间中进行定义;其他的元素,可以在命名空间内部声明,在命名空间外部定义.命名空间可以重复定义,编译器取命名空间定义的并集作为最终的命名空间定义.用using namespace可以使得相关元素免于每次都写namespace::someelement.命名空间(namespace)是一种描述逻辑分组的机制,可以将按某些标准在逻辑上属于同一个任务中的所有类声明放在同一个命名空间中.标准C++库(不包括标准C库)中所包含的所有内容(包括常量、变量、结构、类和函数等)都被定义在命名空间std(standard标准)中了.
方法/步骤
2

2. 使用命名空间作用域解析运算符(::)对命名空间中成员的引用,需要使用命名空间的作用域解析运算符::.例如:// out1.cpp#include “out.h”#include int main ( ) {Outer::i = 0;Outer::f(); // Outer::i = -1;Outer::Inner::f(); // Outer::i = 0;Outer::Inner::i = 0;Outer::Inner::g(); // Inner::i = 1;Outer::Inner::h(); // Inner::i = 0;std::cout << “Hello, World!” << std::endl;std::cout << “Outer::i = ” << Outer::i << “, Inner::i = ” << Outer::Inner::i << std::endl;}using指令(using namespace)为了省去每次调用Inner成员和标准库的函数和对象时,都要添加Outer::Inner::和 sta::的麻烦,可以使用标准C++的using编译指令来简化对命名空间中的名称的使用.格式为:using namespace 命名空间名[::命名空间名……];在这条语句之后,就可以直接使用该命名空间中的标识符,而不必写前面的命名空间定位部分.因为 using指令,使所指定的整个命名空间中的所有成员都直接可用.例如:// out2.cpp#include “out.h”#include // using namespace Outer; // 编译错误,因为变量i和函数f()有名称冲突using namespace Outer::Inner;using namespace std;int main ( ) {Outer::i = 0;Outer::f(); // Outer::i = -1;f(); // Inner::f(),Outer::i = 0;i = 0; // Inner::ig(); // Inner::g(),Inner::i = 1;h(); // Inner::h(),Inner::i = 0;cout << “Hello, World!” << endl;cout << “Outer::i = ” << Outer::i << “, Inner::i = ” << i << endl;}

推荐信息