c++中的命名空间、函数重载、缺省参数

一:命名空间、域作用符

首先我们先建立一个 .c 文件

c++中的命名空间、函数重载、缺省参数

学过C语言的同学都知道,最开始学习C语言时,老师总会让我们在写代码前包含以下 <stdio.h>这个头文件,“standard input&output"其实是标准输入输出的头文件,我们在调用输入输出函数时就会用到这个头文件。

类似的,在我们建立一个 .cpp 文件时,最开始经常会这样写

c++中的命名空间、函数重载、缺省参数

这里的iostream同C语言中的stdio.h意义相同,都表示输入输出流in(输入) 、out(输出)、 stream(流)

这里我们看一下第二句 using namespace std的意义:

中文解释为 命名空间

我的理解是,给每个变量都划分了一个自己的空间,在自己的空间内,命名不可以重复,但是在不同空间里,可以用相同的字符来给变量命名,只要标出该变量属于哪一个空间即可。

这里举个栗子:

c++中的命名空间、函数重载、缺省参数

当我们写出这样的代码时,编译器并不可以通过,也给出了错误提示

c++中的命名空间、函数重载、缺省参数

可是在实际开发中,难免有命名冲突的时候,于是C++就很好的用命名空间解决了这个问题,我们看看下面的代码

c++中的命名空间、函数重载、缺省参数

这里编译器提示生成成功,证明这里的3个a没有冲突

可是三个相同的a要如何访问呢? 这里就出现了 域作用符( :: )

格式  命名空间 :: 变量

c++中的命名空间、函数重载、缺省参数

c++中的命名空间、函数重载、缺省参数

::之前表示的是当前变量是哪一个域下的变量,没有写的时候(上图第三个输出函数)默认为全局域

因为有了命名空间和域作用符,在C++代码编写的时候就可以出现大量的重复命名,只要注清楚当前的变量的域就OK了,所以 命名空间起到了一个很好的名字隔离的效果!!!

二、函数重载

c++和c语言还有一个非常大的不同点就是c++支持函数重载

我们先写一个简单的c语言代码

c++中的命名空间、函数重载、缺省参数

c++中的命名空间、函数重载、缺省参数

现在看一下c++的代码

c++中的命名空间、函数重载、缺省参数

c++中的命名空间、函数重载、缺省参数

观察运行结果就可以发现,函数成功调用,证明函数名在特定的情况下相同并不会影响函数调用

c++中的命名空间、函数重载、缺省参数

三、缺省参数

举个栗子

c++中的命名空间、函数重载、缺省参数

如果默认的参数依旧被传参了会怎样呢

c++中的命名空间、函数重载、缺省参数

函数缺省的注意事项及错误示范

c++中的命名空间、函数重载、缺省参数