C++学习笔记十二之函数重载

来源:互联网 发布:女包包网淘宝网 编辑:程序博客网 时间:2024/05/20 07:53

函数重载使用不同的参数列表来完成相同的工作(说白了就是重复使用同一个函数名)。

函数重载:可以有多个同名函数,对函数名进行了重载,使用不同的参数列表。

函数特征标:函数的参数列表

函数重载的关键是要参数列表必须不一样,函数类型可以相同也可以不同。


举个例子:
int love(int a, int b);
int love(int c, int d);
这两个函数的特征标(参数列表)是相同的,因为函数的参数数目和类型相同,并且排列顺序也相同,所以这就不是函数重载。

再举个例子:
int love(int a);
int love(int a, int b);
int love(char c);
double love(int d);
这个例子中所有的函数要么是参数数目不同,要不就是参数类型不同,这才是函数重载

这里有书上的一段代码,给一个字符串和数字,依次输出前几个字符和数字。
【源码示例】
#include <iostream>#include <stdlib.h>unsigned long left(unsigned long num,unsigned ct);char * left(const char *str,int n=1);int main(){using namespace std;char *trip = "Hawaii!!";unsigned long n = 12345678;int i;char *temp;for (i=1;i<10;i++){cout << left(n,i)<<endl;temp = left(trip,i);cout << temp << endl;delete[] temp;}system("pause");return 0;}unsigned long left(unsigned long num, unsigned ct){unsigned digits = 1;unsigned long n = num;if (ct == 0 || num == 0)return 0;//判断数字的位数while (n/=10){digits++;}if (digits>ct){ct = digits-ct;while (ct--){num /= 10;}//返回前几位数字return num;}else{return num;}}char * left(const char *str, int n ){if (n < 0)n = 0;char *p = new char[n+1];int i;for (i=0;i<n&&str[i];i++){p[i] = str[i];}while (i<=n){p[i++] = '\0';}return p;}
【演示结果】




原创粉丝点击