1.函数重载(函数多态)指的是可以有多个同名的函数,因此对函数进行重载。函数多态和函数重载指的是同一回事,但是我们通常用函数重载。
2.函数重载的条件:要么函数的参数类型不同,要么函数的参数个数不同,或者都不同。
3.注意:
double cube(double x); double cube(double & x); //这两种是不能重载的
long gronk(int n, float m); double gronk(int n, float m);//不能重载,因为函数的参数类型和个数都完全一模一样,不管返回值是否一致,只要函数参数和个数一致,就不能重载4.重载实例:
下例中的left函数重载了,在第一个left函数中,找出一串数字的前n个数字,在第二个left函数中,找出一串字符的前n个字符
#include <iostream> using namespace std; long left(long num, int n); char * left(char * str, int bit); int main() { long num, result1; int bit1, bit2; char * str, * result2; cout << "Enter a number: "; cin >> num; cout << "Enter the bit: "; cin >> bit1; result1 = left(num, bit1); cout << result1 << endl; cout << endl << "Enter a string: "; cin >> str; cout << "Enter the bit: "; cin >> bit2; result2 = left(str, bit2); cout << result2 << endl; return 0; } long left(long num, int bit) { int digits = 1; long n = num; if(num == 0 || bit == 0) return 0; while(n /= 10) digits++; if(digits > bit) { bit = digits - bit; while(bit--) num /= 10; return num; } else return num; } char * left(char * str, int bit) { int i; char * p = new char[bit + 1]; for(i = 0; i < bit && str[i]; i ++) p[i] = str[i]; while(i <= bit) p[i++] = ‘\0‘; return p; }运行结果: