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

海洋馆网站建设python做网站还是数据

海洋馆网站建设,python做网站还是数据,网站排名掉了怎么办,大航母网站建设怎么样目录 1.引例 2.函数重载的概念 3.C支持函数重载的原理 1.引例 倘若现在要实现一个加法计算器,用C语言实现的话我们会选择这样的方式: int Add_int(int a, int b) {return a b; }double Add_double(double a, double b) {return a b; } 在使用加…

目录

1.引例

2.函数重载的概念

3.C++支持函数重载的原理 


1.引例

倘若现在要实现一个加法计算器,用C语言实现的话我们会选择这样的方式:

int Add_int(int a, int b)
{return a + b;
}double Add_double(double a, double b)
{return a + b;
}

在使用加法计算器时,需要根据需求调用不同的函数:

int main()
{cout << Add_int(10, 20) << endl;cout << Add_double(2.2, 3.3) << endl;return 0;
}

这里存在一个让人不舒服的点,明明都是简单的加法操作,却因为参数不同的原因在调用函数时需要指定函数名。凭什么它们两个函数不能都叫作Add呢?

针对这个问题,C++中提出了函数重载的概念。函数定义时可以重名,调用函数时,编译器会根据所传参数的类型自动匹配相应的函数

例如,有了函数重载后,加法计算器就可以这样设计:

int Add(int a, int b)
{return a + b;
}double Add(double a, double b)
{return a + b;
}int main()
{//调用函数cout << Add_int(10, 20) << endl;cout << Add_double(2.2, 3.3) << endl;return 0;
}

2.函数重载的概念

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

#include<iostream>
using namespace std;//1.参数类型不同
int Add(int a, int b)
{return a + b;
}double Add(double a, double b)
{return a + b;
}//2.参数个数不同
int Add(int a, int b)
{return a + b;
}int Add(int a, int b, int c)
{return a + b + c;
}//3.参数类型的顺序不同void F(int a, char b)
{//...
}void F(char a, int b)
{//...
}int main()
{Add(10, 20);Add(10, 20, 30);Add(2.2, 3.3);F(10, 'a');F('a', 10);return 0;
}

3.C++支持函数重载的原理 

我们用函数重载定义函数Add,在我们眼中,两个函数名字相同,参数不同,调用函数时,我们知道应该调用哪个,那么编译器在链接阶段,如何知道去哪寻找对应的函数栈帧呢?

int Add(int a, int b)
{return a + b;
}double Add(double a, double b)
{return a + b;
}int main()
{Add(10, 20);Add(2.2, 3.3);return 0;
}

其实编译器在编译与汇编阶段,会对函数名做修饰。不同的编译器对函数名的修饰也不同,为了方便观察,这里以Linux环境下的g++编译器为例。输入指令查看可执行程序反汇编的代码:

g++ Test.cpp -o Testcpp
objdump -S Testcpp

以下是Linux下g++修饰的汇编代码:

为了作对比,我们再看看没有函数重载的C语言是否会对函数名做修饰:

gcc Test.c -o Testc
objdump -S Testc

C代码:

#include<stdio.h>int Add_int(int a, int b)
{return a + b;
}double Add_double(double a, double b)
{return a + b;
}int main()
{Add_int(10, 20);Add_double(2.2, 3.3);return 0;
}

 汇编代码:

通过这里就理解了C语言没办法支持重载,因为同名函数没办法区分。而C++是通过函数修饰规则来区分,只要参数不同,修饰出来的名字就不一样,就支持了重载。 

最后补充,如果两个函数函数名和参数是一样的,返回值不同是不构成重载的,因为调用时编译器没办法区分。

 

http://www.yayakq.cn/news/245118/

相关文章:

  • 公司宣传页设计印刷保定网站关键词优化
  • 网站建设jnlongji济南网络推广公司排名
  • 樊城区建设局网站微信crm客户管理系统
  • 网站怎么做播放窗口深圳做网站好的公司
  • 东莞网站建设做网站广东深圳网站建设方便
  • 360免费建站为什么注册不了企业邮箱申请理由
  • 阿里巴巴做国际网站要多少钱朝阳网站建设是什么意思
  • 接计设做的网站包装网站建设
  • 网站平台由什么搭建坪山网站建设公司
  • 做影视网站什么cms好用吗网站开发会计处理
  • 国外虚拟币网站开发wordpress网页实时更新数据
  • 私人做网站要多少钱网站建设商标属于哪个类别
  • 旅行网站开发需求说明书泉州住房建设局网站
  • 做网站如何推广买量中国交通建设集团有限公司招标网
  • 高端网站制作费用靖江有哪些做网站的
  • 四川省建设厅网站填报获奖象山网站优化公司
  • 福州网站建设专业公司网站备案拍照是什么
  • 怎么查看网站有没有做301精准扶贫网站建设的意义
  • 视频网站建站免费大连网络推广网站优化找哪家好
  • 个人旅游网站模板静态展示网站多少钱
  • 简约淘宝网站模板免费下载山东淄博网站建设的公司
  • 宝塔搭建本地网站校园网站cms
  • 官网建站合作模版世界500强企业排名中国
  • 海安建设银行网站上海高端室内设计事务所
  • thinkphp 企业网站源码织梦网站视频
  • 网站建设英文怎么说5118关键词查询工具
  • 专业建站公司报价单wordpress列表
  • 织梦网站首页是哪个文件公司做网站的流程
  • 武冈市住房和城乡建设局网站一个空间两个php网站
  • 做直播网站找哪家网站好新浪云能用wordpress