首页 / C++ / C++系列: 嵌套命名空间
C++系列: 嵌套命名空间
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++系列: 嵌套命名空间,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1747字,纯文字阅读大概需要3分钟。
内容图文
目录
1.什么是嵌套命名空间?
嵌套命名空间就是在命名空间里面在定义其它的命名空间,就像是俄罗斯套娃。
namespace np1
{
namespace np2
{
namespace np3
{
}
}
...
}
2.实验
2.1 外部引用嵌套命名空间内的符号
情况一
#include <iostream>
using namespace std;
namespace np1
{
namespace np2
{
void func2()
{
cout << "np1::np2::func2" << endl;
}
}
void func1()
{
cout << "np1::func1" << endl;
}
}
int main()
{
np1::func1();
np1::np2::func2();
return 0;
}
实验结果
表明嵌套命名空间的引用是符合namespace语法的,没有特殊之处。
情况二
using namespace np1;
int main()
{
func1();
np2::func2();
return 0;
}
输出结果一样。
2.2 命名空间内容不同层次间符号的引用
情况一:第一层调用第二层
#include <iostream>
using namespace std;
namespace np1
{
namespace np2
{
void func2()
{
cout << "np1::np2::func2" << endl;
}
}
void func1()
{
np2::func2();
}
}
int main()
{
np1::func1();
return 0;
}
实验结果
表明在命名空间内部的不同层次符号引用依然遵循namespace语法。
情况二:第二层调用第一层
#include <iostream>
using namespace std;
namespace np1
{
void func1()
{
cout << "np1::func1" << endl;
}
namespace np2
{
void func2()
{
func1();
//np1::func1();
}
}
}
int main()
{
np1::np2::func2();
return 0;
}
实验结果
表明np1相对于np2来说,是默认命名空间或者是全局命名空间。
情况三:第二层调用第一层,但是第一层和第二层存在相同的符号
#include <iostream>
using namespace std;
namespace np1
{
void func1()
{
cout << "np1::func1" << endl;
}
namespace np2
{
void func1()
{
cout << "np1::np2::func1" << endl;
}
void func2()
{
func1();
}
}
}
int main()
{
np1::np2::func2();
return 0;
}
实验结果
表明np2优先会调用自己内部的符号。正如一个函数的内部,它会优先调用自己的局部变量,接着才考虑寻找全局变量。
3.最后
一定要记住,namespace本质是用来解决命名冲突的问题。
内容总结
以上是互联网集市为您收集整理的C++系列: 嵌套命名空间全部内容,希望文章能够帮你解决C++系列: 嵌套命名空间所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。