C++命名空间(超详细)using namespace std

发布时间:2023年12月20日


前言

在本文章中,我们将要详细介绍一下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++标准库,希望对大家的学习有所帮助,仅供参考 如有错误请大佬指点我会尽快去改正 欢迎大家来评论~~ 😘 😘 😘 😘

文章来源:https://blog.csdn.net/lim6ere/article/details/135117334
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。