前言
我们知道C语言除标准库外的库会定义有各种各样的关键字,在我们声明变量的时候,我们不能跟这些关键字冲突,否则编译器可能会报错,但是在C++中我们引入了一个叫命名空间的概念,我们可以很好的解决这个问题
一、什么是命名空间?
命名空间(Namespace)是C++中的一种语言特性,用于将标识符(如变量名、函数名、类名等)组织到逻辑上独立的作用域中。它的主要目的是避免命名冲突,同时提供一种清晰的代码组织方式。简单来说,命名空间可以看作是一个“容器”,用来存放代码中的各种标识符。
我们常见的int、double、float类型的关键字,处于一个叫std的命名空间里面
二、命名空间的定义
对于命名空间的创建,我们需要使用C++的关键字namespace来创建
namespace namespaceName{
......
}
这里的namespaceName是定义的命名空间的名字,是由程序员定义的,比如:
namespace MyNamespace{
int rand = 10;
double doubleNum = 1.11;
}
这里我们创建了一个名为MyNamespace的命名空间,在空间中我定义了名为rand的int类型变量与名为doubleNum的double类型变量
三、命名空间的引用
1. 加命名空间名称及作用域限定符
我们可以通过命名空间名字加命名空间里面的变量名来找到我们命名空间里面的变量
命名空间::变量名
#include <iostream>
namespace MyNamespace {
int rand = 10;
double doubleNum = 1.11;
}
int main() {
printf("%d\n", MyNamespace::rand);
printf("%lf\n", MyNamespace::doubleNum);
return 0;
}
2. 使用using将命名空间中某个成员引入
什么是using关键字
using关键字相当于一种引用,它可以将命名空间或者命名空间里面的变量展开,如果说命名空间是一个被墙体包围起来的空间,那么using的作用就是把那座墙拆掉,我们可以直接访问里面的变量,当然我们也可以使用using单一的将命名空间里面的变量单个暴露出来
#include <iostream>
namespace MyNamespace {
int rand = 10;
double doubleNum = 1.11;
}
using MyNamespace::doubleNum;
int main() {
printf("%lf\n", doubleNum);
return 0;
}
3. 使用using namespace 命名空间名称 引入
上面我们说过,我们可以使用using直接将命名空间展开,将里面的变量等暴露出来
#include <iostream>
namespace MyNamespace {
int rand = 10;
double doubleNum = 1.11;
}
using namespace MyNamespace;
int main() {
printf("%lf\n", doubleNum);
return 0;
}
这里我们将命名空间全部展开了,但是由于rand会与std库中的rand冲突,我就不打印了
4. using namespace std 的解释
相信许多刚学习C++的同学都无法理解一上来就写的using namespace std 这行代码的含义,但是只要我们知道了using namespace 是什么意思,我们就可以大致猜到这行代码的意思是要引用一个名为std的命名空间
std 是什么?
在C++中,std是一个非常重要的命名空间,它是 C++标准库(Standard Library) 的命名空间。标准库是C++语言的核心组成部分,提供了一系列预定义的类、函数、模板和对象,用于支持各种编程任务,如输入/输出、数据结构、算法、内存管理等。
四、End
关于C++的命名空间的知识我们就讲到这里,希望对大家有帮助,谢谢大家的浏览!