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

做类图的网站wordpress怎么更改域名

做类图的网站,wordpress怎么更改域名,做基因表达热图的网站,企业的网站公告怎么制作目录 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/896894/

相关文章:

  • 咨询公司组织架构seo的目的是什么
  • 广告公司网站建设的定位设计网页页面
  • 织梦网站搬家平罗县住房和城乡建设局网站
  • 做速卖通代码的网站17网店货源网
  • 有没有好的做海报的网站深圳手机网站开发
  • 长春电商网站建设哪家好iis如何用ip地址做域名访问网站
  • asp网站安全怎么做wordpress怎么下载文件
  • 个人网站命名技巧欢迎访问语文建设杂志网站
  • 网站优化关键词排名中石化第五建设有限公司官方网站
  • 网站建设新得体会番禺建网站
  • 简述一般网站开发方式有哪些专门做创意门头的网站
  • 沈阳网站开发简维南京网站优化网站建设公司
  • 英语做课后作业的网站wordpress注册修改密码
  • php网站开发需求分析怎样制作免费网页
  • 中国做的好的房产网站界面设计排版
  • 做五金出口在哪个网站好点湖南响应式网站建设价位
  • 在哪个网站做流动补胎的广告好租空间开网站
  • 亚马逊国际站官网长沙建筑公司排名
  • 网页设计企业网站素材库企业登记信息查询
  • 静态做头像的网站公司单页设计
  • 网站建设 长沙开福区威海网站建设怎么样
  • 网站版面做得好的做的网站百度找不到
  • 潍坊住房和城乡建设局网站wordpress顶部菜单怎么删
  • 为某公司或企业做的门户网站史上最强大的搜索神器
  • 湛江网站建设价格常州工厂网站建设
  • 北京网站建设明细huntt wordpress主题
  • 肇东市建设局网站企业服务公司的经营范围有哪些
  • 服装营销型网站建设iis7wordpress
  • 门户网站建设的报价做阿里网站的分录
  • 山东济宁省建设厅官方网站长沙网络推广哪家