>
xml地图|网站地图|网站标签 [设为首页] [加入收藏]

银河163网站他们返回类型不同把,我们能不能在

- 编辑:银河至尊官网网址 -

银河163网站他们返回类型不同把,我们能不能在

#include<iostream>
using namespace std;
void delay(int a=2)
{int sum=0;
 for(int i=1;i<=a;++i)
    for(int j=1;j<3500;++j)
 for(int k=1;k<100000;++k) sum++;

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

}
void main()
{cout<<"delay40 seconds ";
 delay(40);

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

}

int iabs(int a);

delay函数中的程序是么意思啊;象这样的函数什么时候括号里有形参。

float fabs(float a);

返回类型不同不能重载

double dabs(double a);

为什么

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

double abs(double);

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

{return (a>0)?a:-a;}

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

int abs(int);

#include "iostream.h"

{return(a>0)?a:-a;}

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

f=3e+006

运行结果表明,abs函数果然能够处理三种不同数据类型的数据了。那么我们怎样才能自己造一个“多功能工具”呢?

其实要编写一个重载函数并不是很麻烦。首先,我们要告诉电脑,同一个函数名存在了多种定义,所以,我们要给同一个函数名写上多种函数原型(如程序6.3的第二到第四行);其次,我们要对应这些函数原型,分别写上这些函数的定义(如程序6.3的主函数体之后,对三个abs函数的定义)。

银河163网站他们返回类型不同把,我们能不能在程序设计中也做一个多功能的开瓶器。然而电脑又是如何来识别这些使用在不同环境下的“工具”的呢?

在日常生活中使用到多功能工具,如果我们不知道具体应该使用哪个工具,我们会把每个工具放上去试一试,如果只有唯一一个工具适合,那么我们就毫无疑问地能够确定就是使用它了。但是如果出现了两个或者两个以上工具都能适合,我们就分不清到底应该使用哪个是正确的了。

电脑的做法和我们是类似的。电脑是依靠函数声明时参数表中参数个数、各参数的数据类型和顺序来判断到底要运行哪个函数的。因此,当重载函数参数表完全相同的时候,电脑便无法判断应该运行哪个函数,于是程序就出错了。

我们了解了电脑是如何识别重载函数以后,发现要编写一个重载函数还是需要注意一些地方的,那就是:在

重载函数中,任意两个函数的参数表中的参数个数、各参数的数据类型和顺序不能完全一样。例如int func(int a,char b)和float

func(int c,char d)就不能重载,因为它们的参数个数、各参数的类型和顺序完全一样,即使形参名不同、返回值类型不同也是无济于事的。

算法时间:重载函数

从某种意义上说,重载函数是方便了函数的使用者。在前一节我们知道,如果完成了所有函数的编写,那么完成一个程序就像搭积木一样简单了。然而如果功能相似名字却不同的函数太多,那么多“积木”搭起来也未必简单。当函数的编写者充分考虑了不同情况下应该运行稍有不同的函数,函数的使用者就不必为这些小细节而烦恼了。不过重载函数的函数名还是应该符合其功能,如果把功能完全不同的函数重载,那么就大大影响了程序的可读性。

本文由分享平台发布,转载请注明来源:银河163网站他们返回类型不同把,我们能不能在