大家好,我叫梁唐。想要追求更好阅读体验的同学可以点击“阅读原文”访问github仓库。其他命名空间特性的嵌套我们可以嵌套命名空间声明:namespaceelements{namespacefire{intflame;...}floatwater;}我们可以看到这里的火焰位于elements::fire中,所以当我们使用解析操作时,字符使用它,它被写成:elements::fire::flame。同样,我们也可以使用using编译指令引入fire命名空间:usingnamespaceelements::fire;通过,我们还可以将using编译指令和using语句应用于命名空间:namespacemyth{usingJill::fetch;usingnamespaceelements;usingstd::cout;usingstd::cin;}已经引入myth,我们可以这样访问:std::cin>>myth::fetch;并且可以通过using编译指令,A引入B,B引入C,相当于A也引入了C。比如我们运行usingnamespacemyth;,由于myth中引入了元素,所以相当于运行同时使用这两个:usingnamespacemyth;usingnamespaceelements;alias我们也可以为命名空间创建一个别名,例如:namespacemy=myth::elements::fire;usingmy::flame;在上面的示例中,我们将别名与嵌套名称空间组合在一起。其实感觉有点像把命名空间当成一个特殊的变量。匿名命名空间我们也可以省略命名空间的名称来创建匿名命名空间。namespace{intice;intbandy;}相当于遵循using编译指令,也就是说匿名命名空间的潜在作用域是从声明点到声明区域结束。从这个角度看,它类似于全局变量。但是因为是匿名的,所以不能在其他文件中使用using关键字导入,所以不能在其他文件中使用。从某种意义上说,它类似于链接是内部的静态变量。
