码迷,mamicode.com
首页 > 其他好文 > 详细

【共读Primer】53.[6.4]函数重载 Page207

时间:2018-09-08 11:51:24      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:loaded   print   col   编译器   产生   类型   变化   style   表示   

在同一个作用域内,几个函数名字相同但形参列表不同,我们成为重载(voerloaded)函数。

void print(const char *cp);
void print(const int *beg, const int*end);
void print(const int ia[], size_t size);

int j[2] = {0, 1}
print("Hello World");            
print(j , end(j) - begin(j));    
print(begin(j) - end(j));        

在上面的重载函数中,编译器将通过实参的类型和数量进行调用实际函数的选择。

PS: main函数不能被重载

定义重载函数

函数的重载必须在参数数量或参数类型上有差异,返回值的差异不计入重载条件

// 下面的重载正确,参数类型不同
Record lookup(const Account&);
Record lookup(const Phone&);
Record lookup(const Name&);

// 下面的重载不成立, 只有返回值不同,但是返回值不计入重载条件
Record lookup(const Account&);
bool lookup(const Account&);

// 下面两个函数重载不成立,类型没有变化,只是省略了形参名称
Record lookup(const Account &acct);
Record lookup(const Account &);

// 下面的两个函数重载不成立,实际是一个类型
typedef Phone Telno;
Record lookup(const Phone&);
Record lookup(const Telno&);

重载和const形参

在含有const和不含有const的重载中,编译器依然会根据具体的参数类型来选择需要调用的函数。

 

关于重载的一些建议

一般来说我们会将重载运用在运行过程相似或一致的情况下,使用重载来表示,因为这样不会使调用者产生疑惑。

 

【共读Primer】53.[6.4]函数重载 Page207

标签:loaded   print   col   编译器   产生   类型   变化   style   表示   

原文地址:https://www.cnblogs.com/ChattyKu/p/9608218.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!