主页 > 创业  > 

命名空间namespace

命名空间namespace
一、命名空间的定义

定义命名空间,使用namespace关键字,后面跟命名空间的名字,然后接一对花括号{ } 即可,{ }中即为命名空间的成员。

1.一般定义 namespace test { int a = 10; int b = 100; int ADD(int x, int y) { return x + y; } } 2.嵌套定义 namespace test { int a = 10; int b = 100; int Add(int x, int y) { return x + y; } namespace test2 { int c(99); int d(9); //c++可以使用括号来进行列表初始化 int Sub(int x, int y) { return x - y; } } } 3.重名定义

同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。

例如:

namespace N1 //N1是命名空间的名称 { //用花括号{ }将命名空间的内容包起来 //命名空间的内容,即可以定义变量,也可以定义函数 int a; int Add(int x, int y) { return x + y; } } namespace N1 //再次定义命名空间 N1 { int Mul(int x, int y) { return x * y; } }

实际上等同于:

namespace N1  //N1是命名空间的名称 {     //用花括号{ }将命名空间的内容包起来     //命名空间的内容,即可以定义变量,也可以定义函数     int a;     int Add(int x, int y)     {         return x + y;     }     int Mul(int x, int y)     {         return x * y;     } } 二、命名空间的使用

C++为了防止命名冲突,把自己库里面的东西都定义在一个std的命名空间中要使用标准库里面的东西,有三种方式:

加命名空间的名称及作用域限定符。使用using引入命名空间的成员。使用using namespace 命名空间名称引入,将所有名称全展开。

1.命名空间的名称及作用域限定符

代码如下:

namespace test { int a = 10; int b = 100; int Add(int x, int y) { return x + y; } namespace test2 { int c(99); //c++可以使用括号来进行初始化 int d(9); int Sub(int x, int y) { return x - y; } } } int main() { std::cout << test::Add(test::a, test::b) << std::endl; std::cout << test::test2::Sub(test::test2::c, test::test2::d) << std::endl; return 0; }

指定命名空间–麻烦,每个地方都要指定,但也是最规范的方式。

2.使用using namespace 命名空间全展开

代码如下:

using namespace std;

把std整个展开,相当于库里面的东西全部到全局域里面去了,使用起来方便但是可能会有与自己命名空间定义的冲突,规范工程中不推荐这种,日常练习可以用这种。

3.使用using引入命名空间的成员

代码如下:

int c = 100; namespace N { int a = 10; int b = 20; int Add(int left, int right) { return left + right; } int Sub(int left, int right) { return left - right; } } using std::cout; using std::endl; int main() {     printf("%d\n", N::a);     printf("%d\n", N::b);     printf("%d\n", N::Add(1, 2));     printf("%d\n", N::Sub(1, 2));     int c = 10;     printf("%d\n", c);   //局部变量优先,所以c为10     printf("%d\n", ::c); //指定访问左边域,空白表示全局域 }

对部分常用的库里面的东西展开->针对1和2的折中方案,项目中也经常使用。

标签:

命名空间namespace由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“命名空间namespace