C++/命名空间/关键字/输入输出

一、关键字

命名时要避开这些关键字
在这里插入图片描述

二、命名空间


1. 命名空间的作用

在C/C++中,变量、函数和类都是大量存在的,

这些变量、函数和类的名称都会存在于全局作用域中,这么一来就会导致命名的冲突。

使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染。
举个例子

#include<stdio.h>
//存在名为rand的函数
#include<stdlib.h>
namespace Name{
    int rand=233;
}
int main()
{
     printf("%d",Name::rand);
     return 0;
}

**这里的" : : "被称为作用域限定符,命名空间起到一种隔离的作用,避免命名冲突。**

### 2.命名空间的套娃 **注意 :命名空间必须定义在全局变量。** **命名空间非结构体定义,括号之后不能加分号**

命名空间里的内容,不仅可以存放变量,还可以放结构体,类,甚至另一个命名空间,实现无限套娃。

命名空间无论套多少层都是全局的



3.命名空间的重复定义

同一个工程中允许存在多个相同的命名空间,编译器最后会将它们合成到一起。
在这里插入图片描述

4.命名空间的展开

经常使用命名空间girl中身高的要经常调用

girl::tall

因为麻烦,所以我们可以使用using展开命名空间

using namespace 空间名;

如此,空间名中的变量变为全局变量可以随意使用,但是也失去了隔离的效果。

所以,我们可以只展开命名空间中的一个变量,例如

using girl::tall

5.匿名命名空间

又称匿名结构体
未给匿名空间命名会自动产生一个空间名


总结

命名空间用来隔离,避免命名冲突

共三种使用方式

1.空间名+: :(作用域限制符)

girl::tall

2.使用 using namespace 命名空间名称引入 (会破坏隔离效果)

using namespace girl;
int r=tall;

3.使用 using 将命名空间中成员引入

using girl::tall;
int r=tall;

三、输入输出


1.库的展开

库也是会用命名空间的,
C++库的实现定义包含在了一个叫 std 的命名空间中
using namespace std;就可以直接使用。

关于#include< iostream >和"iostream.h"的区别

首先,< > 和 " " 包含头文件的本质区别是查找策略区别。
① " " 的查找策略:先在源文件所在的目录下查找。如果该头文件未找到,则在库函数的头文件目录下查找
② < > 的查找策略:直接去标准路径下去查找。
新的c++摈弃了.h形式的头文件。现在是标准c的头文件是.h,标准c++头文件不带.h。
所以 iostream 推荐用<>;

2.流插入运算符

cout 标准输出(控制台)和 cin 标准输入(键盘)时,必须包含 头文件。

并且需要使用 std 标准命名空间,这里我们下面会详细探讨。

cout<<a<<" "<<endl;

**cout 后面的 << ,我们称之为 “流插入运算符” 。**就像水流的流向一样,可以自动识别变量类型。
endl与\n的作用一样,endl会刷新缓冲区,增加输入输出。
所以大量输入输出可以用\n代替。

3.流提取运算符

cin 后面的 >> ,我们称之为 “流提取运算符”

如果我们想打印某个浮点数,如何控制小数点后的位数呢?在 C++ 的输入中,这是一件比较麻烦的事情。如果想控制小数点的位数,我们完全可以使用C语言的输入

printf("%.2f",n);

临时对象 typename();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小夕晖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值