记录自己学习C++的点点滴滴,为了自己更好的复盘和回顾,如果可以帮助到你,我将不胜荣幸!!!
命名空间又称为名字空间,是程序员命名的内存区域,根据需要指定一些有名字的空间域,把一些全局实体分别存放到各个命名空间,从而与其他命名空间实体分隔开;存放在命名空间域中的全局实体只在本空间域内有效,命名空间对全局实体加以域的限制,从而解决命名冲突
命名空间的形式如下所示:
namespace 命名空间 { 可以定义变量/函数/结构体/类/命名空间,统称为实体 }
命名空间中的变量使用如下所示:
命名空间::变量
其中 :: 称为作用域限定符
命名空间的使用方式包括三种:using编译指令、作用域限定符、using声明机制
其实这种方式是我们在C++代码中经常看到的,形式如下所示:
using namespace std;
其中std表示的是标准命名空间,可以一次将标准命名空间std中的实体全部引出来;但是如果我们不了解std标准命名空间的话,可能会出现我们自己的命名与std标准命名空间冲突的问题;(PS:往往std中无大写字母开头的命名)
在上面我们已经有介绍作用域限定符 :: ,可以用于命名空间中变量的使用,其实就是在代码中需要使用命名空间中的变量时使用作用域限定符指定即可,形式如下:
std::cout<<" "<<std::endl;
通过
命名空间 + 作用域限定符 + 命名空间实体
的方式使用命名空间实体;
作用域限定符的方式使用并不方便,因为我们可能会在代码中多次使用命名空间某一实体,每次都用作用域限定符的话会很麻烦,因此也就引出来了第三种方式
using申明机制形式如下:
using std::cout; using std::endl;
会在开头提前申明我们可能会用到的命名空间实体,不需要按照第一种方式将整个命名空间引入,也就不会存在命名冲突的问题,而且也避免了第二种方式中每次都需要加上作用域限定符的不方便
命名空间的概念很简单也很基础,不过这也算是C与C++的一点不同;