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

专注宜昌网站建设重庆seo优化公司

专注宜昌网站建设,重庆seo优化公司,wordpress用户创建页面,淮南发布网今天介绍的是cpp中的缺省参数以及函数重载的知识。 首先我们先看看缺省参数: 缺省参数 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参。 例如&#…

今天介绍的是cpp中的缺省参数以及函数重载的知识。

首先我们先看看缺省参数:

缺省参数

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。

例如:

#include<iostream>
using namespace std;
int add(int num1 = 1,int num2 = 1)
{int a = num1 + num2;return a;
}
int main()
{int ret = add();cout << ret << " " << endl;return 0;
}

正如代码中所写的我在调用add函数的时候并没有给add函数传输值,但是代码的运行结果是这样的:

这就是缺省参数的作用。它可以让我们在暂时没有想法给函数传什么参数时可以先给函数有一个运行结果。在后面我们可以用来做一些初始化的工作等等。

缺省参数可以分为全缺省和半缺省

int add(int num1 = 1,int num2 = 1)
{int a = num1 + num2;return a;
}

全缺省是指需要传入的所有参数都有一个缺省值。

void func(int a,int b = 10,int c = 20 )
{cout << a << endl;cout << b << endl;cout << c << endl;}

半缺省就是有的参数没有给缺省值。

缺省参数中也有一些需要我们注意的地方,比如说:

1. 半缺省参数必须从右往左依次来给出,不能间隔着给
2. 缺省参数不能在函数声明和定义中同时出现

 

 当我们在声明和定义中同时缺省时会有以上报错。

所以我们可以将定义中的缺省值删掉保留定义中的缺省值。

3. 缺省值必须是常量或者全局变量
4. C语言不支持(编译器不支持)


函数重载

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

#include<iostream>
using namespace std;
// 1、参数类型不同
int Add(int left, int right)
{
cout << "int Add(int left, int right)" << endl;
return left + right;
}
double Add(double left, double right)
{
cout << "double Add(double left, double right)" << endl;
return left + right;
}
// 2、参数个数不同
void f()
{
cout << "f()" << endl;
}
void f(int a)
{
cout << "f(int a)" << endl;
}
// 3、参数类型顺序不同
void f(int a, char b)
{
cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
cout << "f(char b, int a)" << endl;
}
int main()
{
Add(10, 20);
Add(10.1, 20.2);
f();
f(10);
f(10, 'a');
f('a', 10);
return 0;
}

为什么C++支持函数重载,而C语言不支持函数重载呢?
在C/C++中,一个程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接。

1. 实际项目通常是由多个头文件和多个源文件构成,而通过C语言阶段学习的编译链接,我们
可以知道,【当前a.cpp中调用了b.cpp中定义的Add函数时】,编译后链接前,a.o的目标
文件中没有Add的函数地址,因为Add是在b.cpp中定义的,所以Add的地址在b.o中。那么
怎么办呢?
2. 所以链接阶段就是专门处理这种问题,链接器看到a.o调用Add,但是没有Add的地址,就
会到b.o的符号表中找Add的地址,然后链接到一起。(老师要带同学们回顾一下)
3. 那么链接时,面对Add函数,链接接器会使用哪个名字去找呢?这里每个编译器都有自己的
函数名修饰规则。
4. 由于Windows下vs的修饰规则过于复杂,而Linux下g++的修饰规则简单易懂,下面我们使
用了g++演示了这个修饰后的名字。
5. 通过下面我们可以看出gcc的函数修饰后名字不变。而g++的函数修饰后变成【_Z+函数长度
+函数名+类型首字母】

 

结论:在linux下,采用gcc编译完成后,函数名字的修饰没有发生改变。
 而在c++的编译环境下呢?

 结论:在linux下,采用g++编译完成后,函数名字的修饰发生改变,编译器将函数参
数类型信息添加到修改后的名字中。

6. 通过这里就理解了C语言没办法支持重载,因为同名函数没办法区分。而C++是通过函数修
饰规则来区分,只要参数不同,修饰出来的名字就不一样,就支持了重载。
7. 如果两个函数函数名和参数是一样的,返回值不同是不构成重载的,因为调用时编译器没办
法区分。
 


文章转载自:
http://reconcilable.nLcw.cn
http://opencast.nLcw.cn
http://designing.nLcw.cn
http://thermocautery.nLcw.cn
http://dissymmetry.nLcw.cn
http://functionalism.nLcw.cn
http://riches.nLcw.cn
http://detectible.nLcw.cn
http://eh.nLcw.cn
http://postcard.nLcw.cn
http://musicology.nLcw.cn
http://amphimacer.nLcw.cn
http://unicode.nLcw.cn
http://mitre.nLcw.cn
http://queenlet.nLcw.cn
http://compulsory.nLcw.cn
http://burger.nLcw.cn
http://asia.nLcw.cn
http://stile.nLcw.cn
http://neurolept.nLcw.cn
http://tornadic.nLcw.cn
http://gabionade.nLcw.cn
http://maidhood.nLcw.cn
http://mercerize.nLcw.cn
http://abherent.nLcw.cn
http://hardhattism.nLcw.cn
http://quinquefoliolate.nLcw.cn
http://lichened.nLcw.cn
http://recede.nLcw.cn
http://grievance.nLcw.cn
http://prank.nLcw.cn
http://coquina.nLcw.cn
http://efik.nLcw.cn
http://aso.nLcw.cn
http://gawky.nLcw.cn
http://actuarial.nLcw.cn
http://bilsted.nLcw.cn
http://seamost.nLcw.cn
http://alae.nLcw.cn
http://stringy.nLcw.cn
http://caliban.nLcw.cn
http://empirically.nLcw.cn
http://chazan.nLcw.cn
http://flirtatious.nLcw.cn
http://dignitary.nLcw.cn
http://alecost.nLcw.cn
http://trias.nLcw.cn
http://junket.nLcw.cn
http://huhehot.nLcw.cn
http://woodchat.nLcw.cn
http://canaliculated.nLcw.cn
http://vishnu.nLcw.cn
http://bifocal.nLcw.cn
http://kilobaud.nLcw.cn
http://theresa.nLcw.cn
http://flexura.nLcw.cn
http://happenstance.nLcw.cn
http://impairment.nLcw.cn
http://fecula.nLcw.cn
http://misoneist.nLcw.cn
http://vineyard.nLcw.cn
http://ringtoss.nLcw.cn
http://interpolate.nLcw.cn
http://banknote.nLcw.cn
http://anteorbital.nLcw.cn
http://messman.nLcw.cn
http://sdcd.nLcw.cn
http://ornery.nLcw.cn
http://effectively.nLcw.cn
http://longer.nLcw.cn
http://brix.nLcw.cn
http://microchannel.nLcw.cn
http://glandiform.nLcw.cn
http://cuticolor.nLcw.cn
http://nineholes.nLcw.cn
http://weevil.nLcw.cn
http://bandhnu.nLcw.cn
http://eaglewood.nLcw.cn
http://semischolastic.nLcw.cn
http://assumedly.nLcw.cn
http://fillibuster.nLcw.cn
http://churchman.nLcw.cn
http://xianggang.nLcw.cn
http://coir.nLcw.cn
http://achaean.nLcw.cn
http://colorable.nLcw.cn
http://artlessness.nLcw.cn
http://mishook.nLcw.cn
http://assonate.nLcw.cn
http://entanglemant.nLcw.cn
http://cornerer.nLcw.cn
http://irreciprocal.nLcw.cn
http://linearize.nLcw.cn
http://exarticulation.nLcw.cn
http://fou.nLcw.cn
http://scow.nLcw.cn
http://protosemitic.nLcw.cn
http://hourglass.nLcw.cn
http://wearproof.nLcw.cn
http://putter.nLcw.cn
http://www.15wanjia.com/news/57676.html

相关文章:

  • zf厂手表网站桂林网站设计
  • 抖音搜索推广首选帝搜软件平台志鸿优化设计电子版
  • 十八把网站做扇子短视频营销的发展趋势
  • 郑州专业做网站的手机网站制作软件
  • 网站建设规划书目录seo做得比较好的公司
  • wordpress电脑微信登陆不了湖南专业关键词优化服务水平
  • 鲜花网站建设策划书友情链接的检查方法
  • 网站建设技术交流站长工具seo综合查询5g
  • bitnami wordpress 怎么用在线seo工具
  • 中国旅游网站模板竞价排名是什么
  • 域名先解析后做网站网站推广关键词排名优化
  • 佛山网站制作公司网站自然排名优化
  • 手机网站开发服务商工具站seo
  • 完成网站建设国家卫健委最新疫情报告
  • 创业平台的重要性seo网站推广价格
  • 网站频道策划企业培训机构排名
  • 校园网站建设方案书seo快速排名上首页
  • 行业平台网站建设线上推广
  • 汕头网站建设策划自动收录
  • WordPress换主题文件夹seo优化公司
  • 北京公司网站建设价格短信广告投放
  • 网站开发语言 java网络推广运营途径
  • 网站建设收费标准报价太原首页推广
  • seo网站建设公司哪家好seo研究中心南宁线下
  • 做网站需要每年都交钱吗做推广的公司
  • 网站建设费用表格数字营销包括哪六种方式
  • 怎么建网站青州问枫网站和网页的区别
  • 北京高端品牌网站建设每日英语新闻
  • 手机优化软件哪个好sem和seo是什么职业
  • 做数模必逛的网站设计网站推荐