文章目录
- 前言
- 一、为什么要有命名空间
- 二、命名空间的定义
- 1.正常定义
- 2.嵌套定义
- 3.多文件
- 三、命名空间的使用
- 1.命名空间名称+作用域限定符
- 2.使用using将命名空间某个成员引入
- 3.使用using namespace将整个命名空间引入
- 四、c++标准库
- 总结
前言
在本文章中,我们将要详细介绍一下C++命名空间的内容,具体包括命名空间的引出,定义,使用以及c++标准库等等。
一、为什么要有命名空间
在c++中我们引入了命名空间这个概念,为什么会出现呢??
🧐🧐c++其实很大一部分都是对c的一些缺陷和不足进行改进
我们来看一下下面这段代码
这是可以编译过的
但是我们如果将c语言标准库的一些内容引进之后,就会出现问题
我们在以后的实际应用中经常会出现和库中的名字冲突,库中的内容是在太多了。
很有可能我们在不注意下就会冲突。
同时还存在这种情况:两个人在开发过程中使用了同样的名字,也会发生冲突。
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突
针对这个问题,c++制定者使用了命名空间,将标识符的名称进行本地化,防止命名冲突
二、命名空间的定义
✨ ✨ 使用到namespace关键字,后面接命名空间的名字,后面再接一堆大括号{}。{}中的内容就是命名空间的成员
1.正常定义
🌝🌝在命名空间中可以定义变量,函数,自定义类型等等
namespace peng
{int rand = 10;int add(int x,int y){return x+y;}struct stu{char name[20];int age;};
}
2.嵌套定义
🌝🌝命名空间支持嵌套定义,这样也同时避免了出现重复变量
namespace peng
{int rand = 10;int add(int x, int y){return x + y;}struct stu{char name[20];int age;};namespace pengpeng{int x = 20;};
}
3.多文件
🌝🌝同一个工程允许存在多个相同的命名空间,编译器最后会合成为一个命名空间
三、命名空间的使用
一个命名空间就是一个新的域,我们不能按照c语言的正常访问
1.命名空间名称+作用域限定符
🔥 🔥 在所用的变量或者函数等之前,加上–》命名空间名称::所用
2.使用using将命名空间某个成员引入
🔥 🔥我们也可以使用using将命名空间某个成员引入。
对于嵌套调用的我们再加一层作用域限定符就可以
对于自定义类型我们创建变量的方式不同
我们使用下面方法才可以
struct peng::stu s1 = { “李华”,20 };
3.使用using namespace将整个命名空间引入
🔥 🔥我们也可以使用using将命名空间某个成员引入。
我们这样就可以像c语言那样正常使用
四、c++标准库
经过上面的学习。我们知道了命名空间,我们来看一下这个是什么
using namespace std;
这其实是c++标准库的命名空间,那我们日常生活如何使用呢?
💗💗.在日常的练习中,我们直接使用就可以
💗💗.这个全部展开,标准库就暴露了,如果我们定义跟库重名的类型/对象/函数,就会存在冲突问题。这个问题在日常练习在很少出现。但是在项目开发中,就很容易出现。在项目中我们一般用命名空间名称+作用域限定符或者使用using将命名空间某个成员引入的方法
总结
以上就是今天要讲的内容,本文仅仅详细介绍了C++命名空间的使用以及c++标准库,希望对大家的学习有所帮助,仅供参考 如有错误请大佬指点我会尽快去改正 欢迎大家来评论~~ 😘 😘 😘 😘