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