C++函数重载的深入解析

  次阅读 作者:智能小宝 来源:互联网 2016-01-26 10:08 我要评论(0)

在C++中,我们也能够把具有相同功能的函数整合到一个函数上,而不必去写好多个函数名不同的函数,这叫做函数的重载。以下是对C++中的函数重载进行了详细的分析介绍,需要的朋友可以过来参考下

我们在开瓶瓶罐罐的时候,经常会遭遇因各种瓶口规格不同而找不到合适的工具的尴尬。所以有时候就为了开个瓶,家里要备多种规格的开瓶器。同样是开个瓶子嘛,何必这么麻烦?于是有人发明了多功能开瓶器,不管啤酒瓶汽水瓶还是软木塞的红酒瓶都能轻松打开。

然而开瓶器的问题也会发生到程序设计中。比如我们要编写一个函数来求一个数的绝对值,然而整数、浮点型数、双精度型数都有绝对值,但为它们编写的函数返回值类型却是各不相同的。比如:

复制代码 代码如下:

int iabs(int a);

float fabs(float a);

double dabs(double a);

这样是不是有点备了多种开瓶器的感觉?我们能不能在程序设计中也做一个多功能的开瓶器,把所有数据类型的求绝对值都交给abs这一个函数呢?

在C++中,我们也能够把具有相同功能的函数整合到一个函数上,而不必去写好多个函数名不同的函数,这叫做函数的重(音ch ng)载(Overload)。重载的本质是多个函数共用同一个函数名。

我们先来看一个函数重载的实例:(程序6.3)

复制代码 代码如下:

#include "iostream.h"

int abs(int a);//当参数为整型数据时的函数原型

float abs(float a);//当参数为浮点型数据时的函数原型

double abs(double a);//当参数为双精度型数据时的函数原型

int main()

{

int a=-5,b=3;

float c=-2.4f,d=8.4f;

double e=-3e-9,f=3e6;

cout <<"a=" <<abs(a) <<endl <<"b=" <<abs(b) <<endl;//输出函数返回的结果

cout <<"c=" <<abs(c) <<endl <<"d=" <<abs(d) <<endl;

cout <<"e=" <<abs(e) <<endl <<"f=" <<abs(f) <<endl;

return 0;

}

int abs(int a)//函数定义

{

cout <<"int abs" <<endl;//显示运行了哪个函数

return (a>=0?a:-a);//如果a大于等于零则返回a,否则返回-a。

}

float abs(float a)

{

cout <<"float abs" <<endl;

return (a>=0?a:-a);

}

double abs(double a)

{

cout <<"double abs" <<endl;

return (a>=0?a:-a);

}

运行结果:

int abs

int abs

a=5

b=3

float abs

float abs

c=2.4

d=8.4

double abs

double abs

e=3e-009

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...