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

文章目录

  • 前言
  • 一、为什么要有命名空间
  • 二、命名空间的定义
    • 1.正常定义
    • 2.嵌套定义
    • 3.多文件
  • 三、命名空间的使用
    • 1.命名空间名称+作用域限定符
    • 2.使用using将命名空间某个成员引入
    • 3.使用using namespace将整个命名空间引入
  • 四、c++标准库
  • 总结


前言

在本文章中,我们将要详细介绍一下C++命名空间的内容,具体包括命名空间的引出,定义,使用以及c++标准库等等。

一、为什么要有命名空间

在c++中我们引入了命名空间这个概念,为什么会出现呢??
c++其实很大一部分都是对c的一些缺陷和不足进行改进

我们来看一下下面这段代码

C++命名空间(超详细)using namespace std_第1张图片
这是可以编译过的
但是我们如果将c语言标准库的一些内容引进之后,就会出现问题
C++命名空间(超详细)using namespace std_第2张图片
我们在以后的实际应用中经常会出现和库中的名字冲突,库中的内容是在太多了。
很有可能我们在不注意下就会冲突。
同时还存在这种情况:两个人在开发过程中使用了同样的名字,也会发生冲突。
在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语言的正常访问
C++命名空间(超详细)using namespace std_第3张图片

1.命名空间名称+作用域限定符

在所用的变量或者函数等之前,加上–》命名空间名称::所用
C++命名空间(超详细)using namespace std_第4张图片

2.使用using将命名空间某个成员引入

我们也可以使用using将命名空间某个成员引入。

C++命名空间(超详细)using namespace std_第5张图片
对于嵌套调用的我们再加一层作用域限定符就可以
C++命名空间(超详细)using namespace std_第6张图片
对于自定义类型我们创建变量的方式不同
C++命名空间(超详细)using namespace std_第7张图片
我们使用下面方法才可以

struct peng::stu s1 = { “李华”,20 };

3.使用using namespace将整个命名空间引入

我们也可以使用using将命名空间某个成员引入。
C++命名空间(超详细)using namespace std_第8张图片

我们这样就可以像c语言那样正常使用

四、c++标准库

经过上面的学习。我们知道了命名空间,我们来看一下这个是什么

using namespace std;

这其实是c++标准库的命名空间,那我们日常生活如何使用呢?
.在日常的练习中,我们直接使用就可以
.这个全部展开,标准库就暴露了,如果我们定义跟库重名的类型/对象/函数,就会存在冲突问题。这个问题在日常练习在很少出现。但是在项目开发中,就很容易出现。在项目中我们一般用命名空间名称+作用域限定符或者使用using将命名空间某个成员引入的方法

总结

以上就是今天要讲的内容,本文仅仅详细介绍了C++命名空间的使用以及c++标准库,希望对大家的学习有所帮助,仅供参考 如有错误请大佬指点我会尽快去改正 欢迎大家来评论~~

你可能感兴趣的:(C嘎嘎,c++,java,开发语言)