C++ 中单行书写的多层嵌套命名空间具体指代什么含义?
C++ 嵌套命名空间语法含义解答
你示例中出现的university::project::work是C++的嵌套命名空间写法,其中::是作用域解析运算符,多个::分隔的标识符代表命名空间的逐层包含关系:
- 层级对应关系:代表
work命名空间定义在project命名空间内部,而project命名空间又定义在university命名空间内部,原始的定义写法如下:
// C++17之前的嵌套命名空间定义写法 namespace university { namespace project { namespace work { // 此处声明/定义的类、函数、变量、常量等标识符,都属于university::project::work作用域 void calculate(); class Task {}; } } } // C++17及更高版本支持更简洁的等价定义写法,和using的写法完全对应 namespace university::project::work { void calculate(); class Task {}; }
using namespace university::project::work;语句的作用:将university::project::work这个嵌套命名空间下的所有标识符都引入到当前语句所在的作用域。引入之后,你调用该命名空间下的成员时,不需要写完整的前缀路径,比如原本需要写全university::project::work::calculate(),引入后直接写calculate()即可调用。- 注意事项:不建议在头文件的全局作用域使用
using namespace语句,会增大不同命名空间标识符冲突的概率,最好仅在.cpp实现文件的局部作用域按需使用。
内容的提问来源于stack exchange,提问作者Swati Sarangi
相关产品推荐
相关产品推荐

