C++之 函数重载

函数的重载:

       函数的重载就是可以在一个程序中使用同名的若干个函数。主要的限制是给定名称的每个函数必须有不同的参数列表。也就是说,一个参数列表中的参数类型与另一个不同——不仅仅是参数名不同,实际上,如果满足下列条件之一,两个同名函数就是不同的:

1.       每个函数的参数个数不同

2.       参数的个数相同,但至少有一对对参数的类型不同

 

 

 

函数模板:

       函数模板是函数的蓝图或处方,编译器使用它生成函数系列的新成员。新函数在第一次使用时创建。从函数模板中生成的函数称为该模板的一个实例或模板的实例化。

例:定义一个larger()函数模板


函数模板的开头是关键字template,表示这是一个模板。其后是一对尖括号,它包含了参数列表。在本例中只有一个参数TT通常用作参数名。单词class是一个关键字,它表示T是一个类型。在使用从模板中生成的函数之前,必须确保把声明或模板的定义放在源文件中。

 

显示指定模板参数:

       在调用函数时,可以显示指定模板的参数,以控制使用哪个版本的函数。编译器不再推断用于替换T的类型,只接受指定的版本。在调用函数时,指定要使用的模板参数类型,就可以强迫使用该版本的函数: larger<long>(a_int,b_int)在这个语句的函数调用中,模板参数值long在函数名后面的尖括号中定义,因此,会从模板中生成并使用对应于long类型的函数。编译器可以把参数的类型自动转换为函数参数所需要的类型。

模板的说明:

       定义模板说明,说明的定义以关键字template开头,但要省略参数,所以原声明中模板参数外部的尖括号就是空的,必须定义说明的参数值,而且必须放在模板函数名后面的尖括号中,例如,long *larger()函数,其说明如下所示:

Template <> long* larger<long *>(long *a,long *b) {

       Return *a>*b?a:b

}

调用过程如下:
cout<<*larger (&a_long,&b_long);

 

 

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值