C++之重载函数

重载函数

在实际应用中会遇到这样的问题,同一项功能,由于有不同类型的需求,需要分别编制不同的函数。例如求一个数的绝对值,由于类型不同的需要,有下述不同名字的函数

Int abs(int );

Long labs(long);

Double fabs(double);

这些函数的功能是相同的,但是名称不同,需要调用的时候就很麻烦,如果都使用相同的函数名是不是就很方便了呢。

C++中引进了重载函数,使得同一个函数名可以对应着不同的函数实现。所谓函数的重载就是建立多个同名的函数,但是函数的形参表必须互不相同。所以还可以表示为:

Int abs(int );

Long abs(long);

Double abs(double);

这样调用起来是不是就方便了很多呢?

两个函数成为重载函数,必须具有如下特征:

函数名相同,作用域相同,参数表中的参数个数或者参数类型或者参数顺序不同。但如果仅仅是返回值不同,不能成为重载函数。

那么又一个问题来了?这么多函数函数名都相同,那我应该怎么调用呢?

我们在调用一个重载函数时,编译的选择原则如下:

将实参类型与所有重载函数的形参一一进行比较,先是查找到一个严格匹配的,如果找到了就调用这个函数,再是通过内部数据转换查找一个匹配的,如果找到了就调用那个函数,最后是通过用户所定义的强制数据转换来查找一个匹配的

我们来举个例子,这样你就可以一目了然了

Void abs(int);

Void abs(double);

则对于下列调用函数abs的匹配情况如下:

abs(1);               //匹配Void abs(int);

Abs(1.5);             //匹配Void abs(double);

Abs(“m”);             //匹配Void abs(int);

Abs((double)5);           //匹配 Void abs(double);

使用重载函数有很多显而易见的好处,当需要实现同一个功能时,方便函数名的记忆,而且更主要是完善了同一个函数的代码功能,给调用带来了许多方便。

猜你喜欢

转载自blog.csdn.net/qq_39759656/article/details/82052336