核心内容摘要
Jimeng AI Studio(Z-Image Edition)与Dify平台集成:快速构建AI应用
最初C标准中并没有名字空间要求程序中全局作用域中声明的变量、函数、类型等必须具有唯一的名字如果在同一个程序中有两个名字相同的全局变量将产生命名冲突和C语言一样如果程序中引入第三方库就必须保证程序中定义的全局名都不能与所用库中的名字相同否则就会产生冲突这就是所谓的全局名字空间污染问题该问题在大型程序中处理起来非常困难。
为此引入了名字空间。
在一个名字空间中可以定义许多不同对象并将这些对象的有效范围局限在名字空间内。
不同名字空间中可以定义相同名称的对象只要两个同名对象不在同一名字空间中就不会引起冲突名字空间的定义语法格式namespacexxx_name{members;}举例namespaceABC{intnum;structstu{intage;char*name;};doubleadd(inta,intb){return(double)ab;}intMin(inta,intb){returnab?a:b;}}如果使用cout或cin必须有using namespace std;名字空间成员的访问名字空间成员的访问有主要有三种方法通过作用域限定符(::)#includeiostreamusingnamespacestd;namespacens1{voidfunc(void){coutns1 funcendl;}}namespacens2{voidfunc(void){coutns2 funcendl;}}intmain(void){ns2::func();ns1::func();return0;}using引用名字空间单个成员#includeiostreamusingnamespacestd;namespacens1{voidfunc(void){coutns1 funcendl;}}namespacens2{voidfunc(void){coutns2 funcendl;}}intmain(void){usingns1::func;ns2::func();//ns1::func();func();return0;}using引用名字空间全部成员#includeiostreamusingnamespacestd;namespacens1{voidfunc(void){coutns1 funcendl;}inta100;}namespacens2{inta200;voidfunc(void){coutns2 funcendl;}}intmain(void){usingnamespacens1;ns2::func();//ns1::func();func();coutaendl;return0;}无名名字空间未命名的名字空间称作无名名字空间#includeiostream//using namespace std;namespacens1{voidfunc(void){std::coutns1 funcstd::endl;}inta100;}namespacens2{inta200;voidfunc(void){std::coutns2 funcstd::endl;}}namespace{//无名名字空间inta300;}intmain(void){//using namespace ns1;ns2::func();ns1::func();std::coutns1::astd::endl;std::cout::astd::endl;//无名名字空间成员的引用return0;}名字空间嵌套指定义在其他名字空中的名字空间#includeiostreamusingnamespacestd;namespacens1{voidfunc(void){std::coutns1 funcstd::endl;}inta100;namespacens2{intb111;}}intmain(void){coutns1::ns2::bendl;return0;}