【C++入门】关键字和命名空间


关键字

C++总计63个关键字,C语言32个关键字
ps:下面我们只是看一下C++有多少关键字,不对关键字进行具体的讲解。后面我学到以后再细讲。
在这里插入图片描述

命名空间

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。(主要目的是为了让编译器识别不出来即可)

命名空间定义

在这里插入图片描述
在这里插入图片描述
从报错信息中我们可以得出rand重定义了,但是我们就定义一次为什么会出现重定义?
思考一会我们就会发现rand是C语言里面的一个库函数,我们在外面又定义了一下所以重定义了。
C语言有办法解决吗?C++有办法解决吗?
C语言是没有办法解决的只能改名字,C++是有办法解决的。(C++兼容C)
C++用命名空间的办法解决了这个问题。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。
1.普通命名
在这里插入图片描述
在这里插入图片描述
从这里看出确实有用,程序生成了,也没有了之前重定义的报错信息了

2.嵌套命名
在这里插入图片描述
在这里插入图片描述
从这里也可以看出嵌套定义内的变量名就是又相同也是没有问题的。至于嵌套定义有什么用等下面嵌套定义的使用再解释

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

在这里,我在同一个工程命名了2个一样的命名空间,一个放声明,一个放定义。没有报错,也没有其它问题。

命名空间使用

在这里插入图片描述
在这里插入图片描述
这里可能会有人有疑惑,a不是在命名空间里面定义了吗,怎么在main函数里面不能用
其实命名空间里面定义的函数、变量等有其具体的使用规则
方法1:加命名空间名称及作用域限定符
在这里插入图片描述
在这里插入图片描述
这就是命名空间的使用,要在变量名前加lzy::。

方法2:使用using namespace 命名空间名称引入
在这里就会有人觉得每次使用都要加这个,这也太麻烦了吧,别急还有下面这种方法
在这里插入图片描述
在这里插入图片描述
但是这个也有一个问题,那就是编译器将会检测到前面重定义的问题
在这里插入图片描述
在这里插入图片描述
到这里就会有人有疑问,那这个方法有什么用?还不如不使用命名空间。
其实我现在也不知道,因为还未学到,等学到之后会在进行补充。

方法3:用using将命名空间中成员引入
其实还有一种方法就是把一些常用的变量用using引入
在这里插入图片描述
在这里插入图片描述
嵌套定义补充
在上面说了嵌套定义那到底怎么用呢?
在这里插入图片描述
在这里插入图片描述
这里输出了0,有人会问为什么输出的不是10呢?
那是因为我们是嵌套的,要想使用最里层的值就要再使用一层作用域限定符
在这里插入图片描述
在这里插入图片描述
这里可以看到嵌套的外层和里层变量相同也不影响

在这里问大家一个问题,前面不是使用过rand的吗,要是命名空间里面定义了rand而在main函数里面又没有使用作用域限定符
那会输出什么?为什么会输出这个?
在这里插入图片描述
在这里插入图片描述
我们会看到输出了一个很大的数,那这个数的含义是什么?
这个数是函数在内存里面的地址,只不过我们用10进制输出,所以是一个很大的数字,它是不固定的,随时可能发生变化
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值