C++命名空间使用详细介绍
目录
- 1.前言
- 2.定义
- 3.using 指令
- 4.using 声明
- 5.嵌套的命名空间
1.前言 在c++中,为了避免代码名称上所产生冲突,引入了命名空间这个东西。
命名空间相当于划分出一定的空间,为特定的类型,函数和变量等的名称(也就是标识符)提供了一个范围。
命名空间之内的标识符访问彼此没有限制,命名空间之外的标识符可通过使用每个标识符的完全限定名来访问成员,也可通过单个标识符的using声明或命名空间中所有标识符的using指令来访问成员。
命名空间可以定义在几个不同的部分中,因此命名空间是由几个单独定义的部分组成的。一个命名空间的各个组成部分可以分散在多个文件中。
2.定义 命名空间的定义使用关键字namespace,后跟命名空间的名称。
namespace namespace_name调用带有命名空间的函数或者变量时,需要在前面加上命名空间的名称(使用完全限定名)。
{
// 代码声明
}
namespace_name::code; // code 可以是变量或函数样例:
#includeusing namespace std; namespace A {void func() {cout << "A" << endl; }}// 第二个命名空间namespace B {void func() {cout << "B" << endl; }}int main(){// 调用第一个命名空间中的函数A::func(); // 调用第二个命名空间中的函数B::func(); return 0; }
结果:
文章图片
3.using 指令 当使用using 指令时,便可不用加完全限定名直接访问。
这个指令会让编译器直接使用namespace里的所有名称。
样例:
#includeusing namespace std; namespace A {void func() {cout << "A" << endl; }}// 第二个命名空间namespace B {void func() {cout << "B" << endl; }}using namespace B; int main(){// 只会调用第二个命名空间中的函数func(); return 0; }
结果:
文章图片
4.using 声明 使用 using 声明,以将一个标识符引入范围:
#includeusing namespace std; namespace A{class a{public:void func(){cout << "A" << endl; }}; }using namespace A; A::a aa; int main(){aa.func(); return 0; }
结果为:
文章图片
5.嵌套的命名空间 一个命名空间中可以定义另一个命名空间,一般形式为:
namespace namespace_name1 {// 代码声明namespace namespace_name2 {// 代码声明}}
像上列代码,如果要访问namespace_name2中的成员,我们得使用::运算符来访问:
// 访问 namespace_name2 中的成员样例:
using namespace namespace_name1::namespace_name2;
// 访问 namespace_name1 中的成员
using namespace namespace_name1;
#includeusing namespace std; namespace A{void func(){cout << "A" << endl; }// 第二个命名空间namespace B {void func(){cout << "B" << endl; }}}using namespace A::B; int main(){// 只会调用第二个命名空间中的函数func(); return 0; }
结果为:
文章图片
【C++命名空间使用详细介绍】到此这篇关于C++命名空间使用详细介绍的文章就介绍到这了,更多相关C++命名空间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- C++构造函数初始化列表的实现详解
- C++模板超详细介绍
- C++编译期循环获取变量类型详情
- C/C++预处理浅析使用形式
- 知乎问题之(.NET|知乎问题之:.NET AOT编译后能替代C++吗())
- opencv从入门到放弃|opencv C艹(色彩空间转换,像素最值,二值化,LUT)
- C++|在路上
- cmake|cmake 入门笔记
- 氪空间超越WeWork中国无悬念,未来将直接挑战WeWork
- C++STL|deque容器详解