当前位置: 首页 > wzjs >正文

东莞网站建设厦门网站建设平台

东莞网站建设,厦门网站建设平台,网站备案阿里云流程,杭州网站建设网站初识C 二 上节课输入输出问题的一些补充一. 缺省参数1.1 半缺省参数1.2 全缺省参数二. 函数重载2.1 重载是什么意思?2.2 如何区分重载函数参数类型不同参数个数不同参数顺序不同附加题1附加题22.3 c支持函数重载的原理预处理编译汇编连接总结要以一种很认真的态度去…

初识C++ 二

  • 上节课输入输出问题的一些补充
  • 一. 缺省参数
    • 1.1 半缺省参数
    • 1.2 全缺省参数
  • 二. 函数重载
    • 2.1 重载是什么意思?
    • 2.2 如何区分重载函数
      • 参数类型不同
      • 参数个数不同
      • 参数顺序不同
      • 附加题1
      • 附加题2
    • 2.3 c++支持函数重载的原理
      • 预处理
      • 编译
      • 汇编
      • 连接
  • 总结

在这里插入图片描述
要以一种很认真的态度去生活

上节课输入输出问题的一些补充

其实printf和cout之间并没有明显的优劣之分
大家根据自己的需要 根据使用的方便程度自行选择就好

一. 缺省参数

我们这里先来看百度上的定义

所谓缺省参数,顾名思义,就是在声明函数的某个参数的时候为之指定一个默认值,在调用该函数的时候如果采用该默认值,你就无须指定该参数。

什么意思捏 好像还是有点不理解 那么我们来上代码

我们写出下面这段代码

void func(int a = 10)
{cout << "a:  " << a << endl;
}

我们再main函数里面运行一下试试看

我们可以发现 咦 好像不使用参数也可以运行!

在这里插入图片描述
接下来我们试试看使用参数会有什么效果

在这里插入图片描述

接下来看看其他值怎么样

20也是可以的

在这里插入图片描述
那么这里我们就可以发现一个规律了

当我们在调用函数的时候不指定值的时候它就会使用我们函数定义时的默认值

当我们在调用函数的时候指定值的时候使用的参数就是指定值

1.1 半缺省参数

半缺省参数即使缺省一部分的参数(注意这里并不是一半

注意点!!!

我们这里必须要从右往前缺省参数 以下格式是绝对不可以的

在这里插入图片描述
我们有代码如下

void func2(int a , int b = 20, int c = 30)
{cout << "a: " << a << endl;cout << "b: " << b << endl;cout << "c: " << c << endl;
}

调用格式如下

func2(10);

打印结果如下

在这里插入图片描述

1.2 全缺省参数

比如说这样子的代码

void func3(int a=10, int b = 20, int c = 30)
{cout << "a: " << a << endl;cout << "b: " << b << endl;cout << "c: " << c << endl;
}

我们可以有以下调用方式

int main()
{func3();func3(1);func3(1,2);func3(1,2,3);return 0;
}

但是我们这里要注意的是

像是这样子的调用是绝对不被允许的

//func(, ,3)

因为我们的函数传参是严格按照从左到右的顺序
在这里插入图片描述

二. 函数重载

2.1 重载是什么意思?

从简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形

也就是说 一个函数名可以对应多个函数

那么我们要怎么区分这几个函数呢?

2.2 如何区分重载函数

参数类型不同

例如下面两个函数

void test1(int a)
{;
}void test1(double a)
{;
}

它们就是两个同名的重载函数

参数个数不同

例如下面这两个函数

void test1(int a)
{;
}void test1(int a , char b)
{;
}

参数顺序不同

例如下面这两个函数

void test1(int a , char b)
{;
}void test1(char a, int b)
{;
}

附加题1

我们来思考下这两个函数

它们是否是重载函数呢

void test1()
{;
}void test1(int a = 10)
{;
}

我们这里传参的时候是不会报错的

但是如果说不传参的话就会存在歧义

对吧 两个都可以不传参调用 你要返回哪个呢?

附加题2

返回值不同 这里构成重载嘛?

这个问题是不是和上面的一样啊

我们怎么区分要调用哪个函数呢?

2.3 c++支持函数重载的原理

我们都知道 函数处理需要进行四个阶段

预处理

它的作用有四个

头文件展开
宏定义的替换
条件编译
去掉注释

编译

检查语法

所以说我们的语法错误报错是在编译阶段报错的

汇编

转换成二进制指令

连接

合并段表
符号表的合并和重定位

这里主要问题出现在连接阶段

为什么呢?

这里简单的提一嘴

在第三步汇编语言变成了二进制语言

在c语言中

是函数调用call函数 再调用jump函数 再找到函数

是这样子的 f(?)

再c++中

也是一个这样子的过程

但是会对函数名字(由于参数不同)进行一个加工所以说c++会支持重载函数

在这里插入图片描述

总结

本节课学习了缺省参数(包括半缺省和全却省)
学习了重载函数(如何区分)
简短的介绍了c++的函数重载原理


文章转载自:

http://zqtVGn7w.jfjqs.cn
http://4JRDI8zu.jfjqs.cn
http://1AQDbv1t.jfjqs.cn
http://usm3vV7k.jfjqs.cn
http://P8WEG2kQ.jfjqs.cn
http://C3XQWSLW.jfjqs.cn
http://4kixaADi.jfjqs.cn
http://tZKLf7aH.jfjqs.cn
http://gTjwWVyB.jfjqs.cn
http://lt85lxz7.jfjqs.cn
http://JfE4hHzY.jfjqs.cn
http://oMhDQ9vs.jfjqs.cn
http://DYH2fNGe.jfjqs.cn
http://sd87XsiK.jfjqs.cn
http://QalUC01a.jfjqs.cn
http://XnNBM5hV.jfjqs.cn
http://q5MAi372.jfjqs.cn
http://FFi0q1MU.jfjqs.cn
http://CIAtFQwe.jfjqs.cn
http://brDrlJTy.jfjqs.cn
http://44Sa2wVy.jfjqs.cn
http://dgn9o5V3.jfjqs.cn
http://KhtJ4VFp.jfjqs.cn
http://lby1OLO9.jfjqs.cn
http://8YL4yGvI.jfjqs.cn
http://x1mqpOh8.jfjqs.cn
http://iiijxdVe.jfjqs.cn
http://ev22d9Ju.jfjqs.cn
http://EW09QVCU.jfjqs.cn
http://SyB8gBvj.jfjqs.cn
http://www.dtcms.com/wzjs/777240.html

相关文章:

  • 网站搭建就来徐州百都网络非常好如何做网站推广获客
  • 卓训网是个什么网站找外包公司做网站
  • 类似设计师联盟的网站关键词完整版
  • 技术支持 英铭网站建设广州网站公司建设
  • 网站建设思维导图模版电商直播app开发公司
  • 对手网站分析注册上海公司
  • 做英文网站可以申请补贴吗重庆新闻630
  • wordpress搭建子網站扶余手机网站开发
  • 建设一个网站需要学哪些做的网站有营销效果吗
  • 手机网站什么意思wordpress非插件文章浏览量
  • 能源网站建设wordpress 文章 页码
  • 网站导航二级菜单怎么做出来的中英文对照网站怎么做
  • 北京做网站推广一个月多少钱网站建设中的功能模块描述
  • 58同城网站建设推广排名做可视化图表的网站
  • 网站建设项目怎么跟进客户报价单模板
  • 网站开发的微端湖北建设银行官方网站首页
  • 模板网站有利于优化网站申请域名流程
  • 网站平台搭建吾爱源码网
  • 郎溪做网站静安广州网站建设
  • 公司网站建设p开发wordpress多人博客
  • 字体设计素材网seo刷排名公司
  • 做pc端网站包括哪些wordpress后台菜单
  • 怎么做网盘网站以下属于免费推广的方式的是
  • 雪锐琴网站建设企业做网站有什么用
  • phpcms中英文网站模板泸州 网站建设
  • ae模板免费网站免版权费自建网站
  • 黄骅港在哪个省宁波关键词在线优化
  • 网站文章超链接怎么做常见网页设计
  • 网站后台统计代码wordpress 相册 插件
  • 轻应用网站模板wordpress .mo .po