重载与函数指针
- 什么是函数重载
- 重载与函数指针相结合
阅读之前注意:
本文阅读建议用时:22min
本文阅读结构如下表:
项目 | 下属项目 | 测试用例数量 |
---|---|---|
什么是函数重载 | 函数重载 | 1 |
函数重载与函数指针相结合 | 函数重载与函数指针 | 1 |
什么是函数重载
参考以下代码:
#include"iostream"
using namespace std;
int myPrint(int a)//函数返回值类型不是判定函数重载的依据
{
printf("a=%d\n", a);
return 0;
}
int myPrint(int a,int b)
{
printf("b=%d\n", b);
return 0;
}
//int myPrint(int a, int b,int c=0)//默认参数c会导致二义性,不明确
//{
// printf("b=%d\n", b);
// return 0;
//}
void main()
{
myPrint(3, 4);
system("pause");
}
可以看出,函数重载即同一个函数名,但形式参数的类型或个数不同,在函数里进行的处理也就不同。值得注意的是,如果有默认参数的存在,还有仅仅只是去掉默认参数的函数,这两个函数就会引起二义性,即编译器将不知道到底执行哪一个函数。
此外,函数重载经常应用在C++中的类的成员函数。1.
函数重载与函数指针相结合
参考以下代码(注意其中函数指针的定义方法):
#include "iostream"
using namespace std;
int myPrint(int a)
{
printf("%d\n", a);
return 0;
}
int myPrint(char *s)//重载+1
{
printf("%s\n", s);
return 0;
}
int myPrint(int a, int b)//重载+2
{
printf("a=%d,b=%d\n", a, b);
return 0;
}
typedef int(*pFun) (int a);//定义了新的数据类型,表示指针指向函数
void main()
{
pFun pF1 = myPrint;
pF1(3);
system("pause");
}
可以看到,在上述代码中,函数指针不过是一种新定义的数据类型pFun罢了,然后再用这种数据类型去定义变量pF1,即可按照函数指针这种数据类型定义的格式来调用相关的重载函数1.
如果本文对你有帮助,不如请我一杯可乐吧