【C++入门】输入输出、缺省参数和函数重载

发布于:2022-11-29 ⋅ 阅读:(397) ⋅ 点赞:(0)


输入输出

C++的输入和输出和C的输入和输出有所不同,但是C++兼容C所以C的输入和输出在C++中也可以用。所以在C++中使用输入和输出时,一般哪个好用就用哪个。
在这里插入图片描述
在这里插入图片描述
这里的<<为流向流的符号,cout为输出流,cin为输入流,endl相当于C语言的换行符

  1. 使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含< iostream >头文件以及std标准命名空间。
    注意:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;旧编译器(vc 6.0)中还支持<iostream.h>格式,后续编译器已不支持,因此推荐使用+std的方式。
  2. 使用C++输入输出更方便,不需增加数据格式控制,比如:整形–%d,字符–%c

在这里插入图片描述
在这里插入图片描述
cin相当于C语言里的scanf
cout相当于C语言里的printf
使用C++输入输出更方便,不需增加数据格式控制
至于C++的输入输出和C语言的输入输出哪个更好用这个得看具体环境。有时候C++的好用,有时候C的好用。

缺省参数

  • 缺省参数概念:
    缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。
    在这里插入图片描述
    在这里插入图片描述
    注意:默认值是编译者随便给的,并不是说必须要用这个默认值。

  • 全缺省参数
    所有参数都给了缺省值
    在这里插入图片描述
    在这里插入图片描述
    当函数的参数为全缺省参数时,调用方式只有上面的四种,没有其它的调用方式了。
    有些人会问不能只给第2个参数传值或者只给第3个参数传值或者其它用方式传值吗。这个是不行的,至于为什么,这个没有为什么这是C++的发明者规定的改变不了。

  • 半缺省参数
    缺省部分参数,缺省值必须从右往左并且连续缺省
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

函数重载

函数重载概念:
函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须不同,常用来处理实现功能类似数据类型不同的问题

1.参数个数不同
在这里插入图片描述
在这里插入图片描述

2.参数类型不同
在这里插入图片描述
在这里插入图片描述

3.参数顺序不同
在这里插入图片描述
在这里插入图片描述
前面的三种方式是可以混在一起的,并不是各自独立的,这里为了简单所以分类讲。
在这里插入图片描述
在这里插入图片描述

注意函数返回值不同的情况下不能构成重载,编译器调用的时候区分不了。
函数重载中有一个特殊的情况:
在这里插入图片描述

在这里插入图片描述
这里看到调用函数给参数是没有问题的,但是我们想调用第二个不给参数的函数呢?
在这里插入图片描述
在这里插入图片描述
在这里我们可以看到出现问题了,为什么呢?其实我们前面讲过缺省函数也可以不传参,所以发生歧义编译器会出现矛盾,不知道调谁。

函数重载深入分析

我们直到C语言是没有函数重载的,那是为什么在C++中就可以,在C语言就不行呢?
在这里插入图片描述
C:
在这里插入图片描述
在这里插入图片描述
从这里可以看出C调用函数的时候只是简单的调用这个函数的名字,所以当有2个名字一样的函数是便会出现歧义和冲突。
C++:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从这里就可以看出C++调用函数的规则和C是不一样的,不像C一样只是单纯的调用个名字,正是因为这个原因所以C++可以函数重载而C语言不像
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看