您的位置:首页 > 编程语言 > C语言/C++

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

2017-07-25 10:33 295 查看
函数重载使用不同的参数列表来完成相同的工作(说白了就是重复使用同一个函数名)。

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

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

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

举个例子:
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;
}
【演示结果】

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: