C++之重载函数

       C语言是实现不了重载的,只要两个函数名称相同,就会报错,但是C++可以实现函数的重载,接下来我们看一下重载的规则。
1.重载规则:
(1)函数名相同
(2)参数的个数,类型,顺序不同都可以构成重载
(3)返回值类型不相同不可以构成重载
接下来我们看下具体的例子:

void func(int a); 
void func(char a); 
void func(char a,int b); 
void func(int a, char b); 
char func(int a); //与第一个函数有冲突,不能构成重载

       程序运行的时候怎么识别出具体使用哪个函数呢?所以我们还要了解匹配的原则
2.匹配原则:
(1)严格匹配,找到即调用
(2)通过隐式转换寻求一个匹配,找到即调用

#include <iostream>
using namespace std;
void print(float a){
cout<<a<<endl;
}
void print(int a){
cout<<a<<endl;
}
int main(){
print(1); // 调用print(int)
print('a'); // 调用print(int)
print(1.11f); //调用 print(float)
print(1.1); /*注意会产生二义性,计算机识别不出到底调用那个函数,会报错C:\XXX\main.cpp:16: error: call of overloaded 'print(double)'is ambiguous*/
return 0;
}

注:
       C++ 允许,int 到long 和double,double 到int 和float 隐式类型转换。遇到这种情型,则会引起二义性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值