1,使用命名空间的原因
最初引进的原因就是因为变量名总会因为一些情况发生重复定义,这个时候就会造成一些错误还难以寻找,全局变量本来作用域就在所有的app文件中,而且在一个项目中,有不同的人编写文件
这个时候变量就非常容易发生冲突,当然如果用驼峰命名法也是可以的,但是名字太长可读性很低,加深了程序员的负担
2,使用格式
:: 域解析说明符 代表一种作用域的关系,左边代表上一级,右边代表所属成员 ,类内申明,类外定义函数时候也要用::代表要实现该类的这个函数
namespace node{ // node是名字,x.y是命名空间中所属变量,还可以有函数和类 int x,y; } using namespace node //直接导入该命名空间,尽量少用,很容易导致命名污染,也就是命名冲突 using node::x; // 把该一个成员导入进来 node::x //使用格式
例子:
#include<cstdio> #include<iostream> namespace node{ int x,y; } namespace dian{ int x,y; } int main(){ node::x=1; node::y=1; dian::x=2; dian::y=2; using node::x; std::cout<<x<<" "<<node::y<<" "; }
3,其他
std : 所有的库的变量函数类模板都在std命名空间内,每个库都有个一个命名空间,这样才让变量都不冲突
命名空间嵌套:也就是嵌套使用,差不多,和类一样有了多层引用
命名空间合并:如果命名空间的名字相同的,就算是不同的Cpp文件也会合并在一起,这也是命名空间的不连续性