重载的概念
重载
同一个标识符在不同的上下文有不同的意义
函数重载
同一个函数名定义不同的函数
当函数名和不同的参数搭配时函数的含义不同
例:
#include <stdio.h>
#include "string.h"
int func(int x)
{
return x;
}
int func(int a,int b)
{
return a + b;
}
int func(const char* s)
{
return strlen(s);
}
int main(int argc, char *argv[])
{
printf("%d\n",func(1));
printf("%d\n",func(1,2));
printf("%d\n",func("zhang"));
return 0;
}
输出:
1
3
5
函数重载至少满足下面一个条件
参数个数不同
参数类型不同
参数顺序不同
例
#include <stdio.h>
#include "string.h"
int func(int a,int b,int c = 0)
{
return a*b*c;
}
int func(int a,int b)
{
return a + b;
}
int main(int argc, char *argv[])
{
printf("%d\n",func(1,2));
return 0;
}
输出:错误
C++中的函数重载
函数重载的注意事项
重载函数在本质上是相互独立的不同函数
重载函数的函数类型不同
函数返回值不能作为函数重载的依据
函数重载是由函数名与参数列表决定的
#include <stdio.h>
int add(int a, int b) // int(int, int)
{
return a + b;
}
int add(int a, int b, int c) // int(int, int, int)
{
return a + b + c;
}
int main()
{
printf("%p\n", (int(*)(int, int))add);
printf("%p\n", (int(*)(int, int, int))add);
return 0;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。