C++函数重载

一、 函数的默认参数能够让你 使用不同的参数调用同一个函数;函数重载让你可以使用多个同名的函数:

多参数–>一个函数(默认参数–默认参数不可跳过,必须从右至左添加默认值);
多函数–>同个数,不同类型的参数(函数重载–关键是函数的参数列表,也叫做函数特征标(function signature)

function signature 相同性定义:两个函数参数数目类型相同,同时参数的排列顺序也相同,则表示他们的function signature 相同。
即:
1. 参数数目
2. 参数类型
3. 参数的排列顺序

【注意】:一般类型转换 都允许 较高类型的数据类型转换为低类型的数据类型
比如:
double ←── float 高

long

unsigned

int ←── char,short 低

【原因】当较低类型的数据转换为较高类型时,一般只是形式上有所改变, 而不影响数据的实质内容, 而较高类型的数据转换为较低类型时则可能有些数据丢失。

因此,在函数重载中,如果编译器没能找到完全匹配的function signature, 那么C++会会自动进行类型转换找到合适的函数进行调用。但是,经过转换之后,不能有超过两个可以调用的函数,C++不知道要调用谁了。

比如:

void test(int a, int b);
void test(long a, int b);
void test(double a, int b);

那么在调用函数时:
unsigned int temp = 1000; 
test(temp, 1);
// 此时,编译器可以调用以上三个函数来完成操作,那么它调用谁呢?所以此时编译器会报错;
// 编译器无法确定到底使用哪一个类型
如果上面的函数只有唯一的一个,那么C++时允许的。

例如:
double cube(double x);
double cube(double& x); 这两个也是不允许的,cube(1.0) 调用哪一个呢?

【注意】:把非const值赋值给 const变量时合法的,但反之是不合法的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值