C++命名空间与输入输出(超详细)using namespace std


前言

在本文章中,我们将要详细介绍一下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将命名空间某个成员引入的方法

我们先看一下正常的输入输出


#include <iostream>
using namespace std;
int main()
{
	cout << "hello" << endl;
	return 0;
}

🌟cout标准输出对象(控制台),cin标准输入对象(键盘),使用时必须包含< iostream >头文件。
🌟cin和cout是全局的流对象
🌟<<流插入运算符,>>流提取运算符
🌟自动识别类型
🌟早期的标准库都是放在全局域中实现的,声明在.h后缀头文件。使用时只需要包含对应的头文件就可以。
后来放在了std命名空间下,为了和c头文件后缀进行区分,也为了正确使用命名空间,规定c++头文件不带.h.
一些旧的编译器还支持< iostream.h>格式,后序编译器不支持了。

总结

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

  • 29
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lim 鹏哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值