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


输入输出

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语言不像
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中,我们可以使用缺省构造函数来创建一个对象数组。 缺省构造函数是指在定义类时没有显式定义任何构造函数的情况下,默认生成的构造函数。它不带任何参数,并且没有函数体,其作用是为对象提供默认的初始化。 如果我们将一个类定义为数组的元素类型,可以使用缺省构造函数来创建一个对象数组。例如,假设我们有一个名为Person的类,没有任何构造函数的定义。我们可以通过以下方式创建一个Person对象数组: Person arr[5]; 上述代码将创建一个名为arr的Person对象数组,数组中包含了5个Person对象。由于缺省构造函数的存在,每个元素都会被默认初始化为该类的默认值。具体的初始化规则取决于成员变量的类型和定义。如果在Person类中定义了成员变量的默认值,那么每个元素都将被初始化为这些默认值。 如果我们想要自定义初始化每个元素,可以通过重载构造函数的方式来实现。这样,在创建对象数组时,我们也可以传递参数来初始化每个元素。例如,如果我们想要将数组中的每个Person对象的年龄初始化为25岁,可以定义一个带有参数的构造函数,并使用如下方式创建数组: Person arr[5] = { Person(25), Person(25), Person(25), Person(25), Person(25) }; 上述代码将创建一个Person对象数组,其中每个元素的年龄被初始化为25岁。 总结起来,通过使用缺省构造函数,我们可以方便地创建对象数组,并根据需要进行默认初始化或自定义初始化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值