C++命名空间
命名空间
提到C++,我们就不得不说命名空间了,那么命名空间到底是什么呢?
也许你经常会看到别人写的C++代码中总是有这样一句:
using namespace std;
其中namespace 就是我们C++中的命名空间。
- 首先我们来说一下为什么C++为什么要引入命名空间
在我们的C/C++语言中,变量、函数以及类都是大量存在的,这些变量、函数以及类都是存在于全局域中的,一不小心,我们就有可能有冲突,再比如,假如我们以后写项目,要链接第三方的库文件,那么是不是就很有可能我们自己起的名字就有可能和别人的冲突,在我们的C语言中,我们只能靠将名字尽量起的复杂一点来解决这个问题,但是也还是无法完全避免,所以为了避免这种冲突,C++就引入了命名冲突这种机制,来避免命名冲突,解决命名冲突的问题。
命名空间定义
namespace 名称{
}
例:
namespace zhangsan{
int a;
int b;
int add(int left,int right){
return left + right;
}
}
这个代码的意思就是,a,b变量以及add函数就是我们zhangsan命名空间下的,假如再有一个add函数,那么它就不是我们这里的add函数了。这样就很方便的使用我们自己命名空间下的东西了。。命名空间不仅可以定义变量还可以定义函数。
命名空间嵌套
namespace zhangsan{
int a;
namespace lisi{
int b;
}
}
注:同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
命名空间的使用
第一种
using namespace zhangsan;
//这种相当于将命名空间里面的内容全部展开,这种不安全,不建议使用,不过我们平时写简单的代码时,可以使用,用起来也很方便第二种
//部分展开,只展开命名空间部分内容,相对来说比较安全
using zhangsan::a;第三种
//用那个,展开那个,这种最安全,但是写起来也繁琐,因为每次都只能这样做才行。
zhangsan::a;// :: 为作用域限定符
注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中
以上就是关于命名空间的相关内容,利用这种机制我们就能很好的解决命名冲突的问题。是不是很秀。。。
还没有评论,来说两句吧...