小古银的官方网站(完整教程):http://www.xiaoguyin.com/
C++入门教程视频:https://www.bilibili.com/vide...ios
在前面代码中,int myabs(int num);
,能够看到参数是int
,返回值也是int
,那么,当传入浮点型或者长整型时,就会像上面说的参数赋值的步骤进行。换句话说,若是传入其余int
保存不了的参数时,那么它就不举了。这种状况就须要新的函数用来处理其它类型,因为其它新函数也是用来求绝对值的,因此也用myabs
做为函数名称,就是为了让函数名称更清晰方便地表达出它的意思,而参数改为各类的类型。ide
上面所说的,若是一堆函数是同一个名字但有不一样的形式参数,那么这堆函数就是重载函数。函数
注意:重载函数只跟函数形式参数的数量还有数据类型有关,跟参数名没有关系,跟返回值也没有关系。网站
如下给出完整栗子:code
#include <iostream> int myabs(int num); float myabs(float num); double myabs(double num); long long myabs(long long num); int main(void) { std::cout << myabs(-1024) << std::endl; std::cout << myabs(10.24) << std::endl; std::cout << myabs(-2.1456) << std::endl; return 0; } int myabs(int num) { if (num < 0) { return -num; } else { return num; } } float myabs(float num) { if (num < 0) { return -num; } else { return num; } } double myabs(double num) { if (num < 0) { return -num; } else { return num; } } long long myabs(long long num) { if (num < 0) { return -num; } else { return num; } }
输出结果:视频
1024 10.24 2.1456
上面写的也只是一部分,若是想要全部类型都适用,就要都写一遍,ヽ(✿゚▽゚)ノ惊不惊喜,意不意外。不过仍是有方法不用写这么多的,就是这个教程很后面教的——模板。教程
当你编译的时候,编译器会分析出你给函数提供了什么类型的参数,而后根据这个数据类型去找符合这个类型的函数,而后就用这个函数调用你指定的参数。若是编译器找不到对应的函数,就尝试找最接近的类型,而后(隐式)转换一下参数变成这个接近的类型,若是也都没有就会编译报错。get
舒适提示:通常IDE仍是很是智能的,当你用鼠标指着你调用的函数时,IDE会显示出来调用的是哪一个函数。编译器