共读Primer53.[6.4]函数重载 Page207

Posted chattyku

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了共读Primer53.[6.4]函数重载 Page207相关的知识,希望对你有一定的参考价值。

在同一个作用域内,几个函数名字相同但形参列表不同,我们成为重载(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的重载中,编译器依然会根据具体的参数类型来选择需要调用的函数。

 

关于重载的一些建议

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

 

以上是关于共读Primer53.[6.4]函数重载 Page207的主要内容,如果未能解决你的问题,请参考以下文章

共读Primer46.[6.3]参数传递--main函数处理参数 Page196

共读Primer64.[7.3]类类型 Page249

共读Primer49.[6.3]返回类型和return语句--关于返回值 Page201

共读Primer51.[6.3]返回类型和return语句--列表初始化返回值 Page203

C++Primer 第十四章

C++ Primer 5th笔记(chap 16 模板和泛型编程)重载与模板