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;
}
运行结果:
原文:http://blog.csdn.net/liuwei271551048/article/details/23373739