重载方法

       在Java中,在同一个类中可以包含多个名称相同,但特征标不同的方法,这叫方法重载。
       当调用对象的方法时,Java将对方法名和参数进行匹配,以确定应执行哪个方法定义。
       要创建重载方法,可在同一个类中创建多个不同的方法定义,它们的名称相同,但参数列表不同。不同之处可以是参数数目、参数类型,也可以两者都不同。只要参数列表是独特的,Java允许对方法进行重载。
       警告:在区分重载的方法时,Java不考虑返回值类型。如果创建两个特征标相同,但返回值不同的方法,类将不能通过编译。此外,方法中每个参数的变量名是无关紧要的,只有参数的数目和类型有关系。
 
函数模板的重载是指在同一作用域内定义多个同名函数模板,但这些函数模板的参数列表或参数类型不同,从而实现了函数模板的重载。 函数模板重载方法有两种: 1. 普通函数与函数模板的重载 可以在函数模板的定义前或后定义一个普通函数,这个普通函数与函数模板同名但参数列表或参数类型不同,就可以实现重载。例如: ```cpp // 普通函数 void swap(int& a, int& b) { int temp = a; a = b; b = temp; } // 函数模板 template<typename T> void swap(T& a, T& b) { T temp = a; a = b; b = temp; } ``` 2. 函数模板之间的重载 可以在同一作用域内定义多个函数模板,这些函数模板同名但参数列表或参数类型不同,就可以实现重载。例如: ```cpp // 函数模板1 template<typename T> void print(T data) { cout << data << endl; } // 函数模板2 template<typename T1, typename T2> void print(T1 data1, T2 data2) { cout << data1 << " " << data2 << endl; } ``` 需要注意的是,函数模板重载的时候,需要注意避免歧义的情况。例如: ```cpp // 函数模板1 template<typename T> void foo(T data) { // ... } // 函数模板2 template<typename T> void foo(T& data) { // ... } ``` 这里的函数模板1和函数模板2都是同名的foo,参数列表也都是一样的,只是第二个参数加了一个引用符号。在这种情况下,编译器无法确定应该调用哪个函数模板,会报错。为避免这种情况,可以采用特化或默认参数的方式来实现函数模板的重载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值