c++函数重载

               重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。

              重载函数有点像是多种含义的操作符(上篇操作符重载函数重载中的一种),例如: 

     cout<<a;
     a<<2;
这两者的同位<<操作符,一个为移位,另一个却为输出。函数重载的关键是函数的参数列表,也称为函数的特征标。两个函数的特征标相同,那么两个函数的参数个数与参数类型必须保持严格的一致。例如:可以定义如下一组函数:

void test(int a,int b);  //a
void test(double a,char *b);   //b
void test(long a,int b);    //c
test(1,3)和a匹配,test(1.2,"q")则和b匹配。

注意:

A. 如果有test()存在,那么,它和谁匹配呢?它不与任何原型匹配!切记,没有匹配的原型并不会自动停止使用其中的某个函数,因为c++将尝试使用标准类型转换强制进行匹配。如果b是test的唯一原型,那么tets(1.2,"q")其中的double类型便会强制转化为int类型。但是如果有多种类似于b原型的重载函数,比如:

void test(float a,char *b);
当test(1.2,"q")尝试去强制进行匹配时,c++就会陷入两难,不知道将int类型转化为float还是转化为double,所以c++将拒绝调用这种函数,并报错。

B.编译器检查时,将把类型引用于类型本身视作同一个特征标。匹配函数并不区分const和非const变量。

C.是特征标使得可以对函数进行重载,而不是函数类型例如:

int test(int a,int b);  
void test(int a,int b);//error
//返回类型可以不同,但特征标也必须不同。
int test(int a,int b);  
void test(int a,double b);//right  
D.虽然函数的重载很吸引人,但也不要滥用,只有函数基本上执行相同的任务,但任务的数据不同时,才应用函数的重载。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值