首页 理论教育C++函数重载的概念及分析

C++函数重载的概念及分析

【摘要】:C++语言的重载机制包含两种类型:一种是函数重载,另一种是运算符重载。对于定义的重载某一函数名的多个函数,当调用这些函数时,必须明确调用的是哪一个函数,这个过程称为重载函数的绑定。每种实现对应着一个函数体,这些函数的名字相同,但是函数的参数类型不同,这就是函数重载的概念。abs()函数重载的概念如图1.10所示。图1.10abs()函数重载分析以下程序中重载函数的情况。

在C++语言中,重载指的是,同一个函数名或同一个运算符根据不同的对象可以完成不同的功能和运算。C++语言的重载机制包含两种类型:一种是函数重载,另一种是运算符重载。

函数重载是指同一个函数名可以对应多个函数的实现,即这些函数的函数名相同,但它们有不同的参数个数,或虽然参数个数相同但参数的类型不同。对于定义的重载某一函数名的多个函数,当调用这些函数时,必须明确调用的是哪一个函数,这个过程称为重载函数的绑定。C++语言中对重载函数的绑定,是在编译时由编译程序根据实参和形参的类型及个数进行最佳匹配,自动确定调用哪一个函数。

例如,可以给函数名add()定义多个函数实现,该函数的功能是求和,即求两个运算数的和。其中,一个函数实现是求两个int型数之和,另一个实现是求两个浮点型数之和,再一个实现是求两个复数的和。每种实现对应着一个函数体,这些函数的名字相同,但是函数的参数类型不同,这就是函数重载的概念。

【例1.31】分析以下程序中重载函数的情况。

解:该程序中,main()函数中调用相同名字abs的两个函数,前面一个abs()函数对应的是一个int型数求绝对值的函数实现,而后面一个abs()函数对应的是一个double型数求绝对值的函数实现。abs()函数重载的概念如图1.10所示。(www.chuimin.cn)

图1.10 abs()函数重载

【例1.32】分析以下程序中重载函数的情况。

解:该程序用于找出几个int型数中最小者,其中出现了函数重载,函数名min对应三个不同的实现,函数的区分依据参数个数的不同,这里的三个函数实现中,参数个数分别为2,3和4,在调用函数时根据实参的个数来选取不同的函数实现。