函数重载和函数指针 int func(int a,int b) { cout<<"func"<<endl; return 0; } int func(int a,int b,int c) { cout<<"func(int,int,int)"<<endl; return 0; } //1.定义一种函数类型 typedef int(MY_FUNC)(int ,int); //定义MY_FUNC的函数类型,返回值是int,参数列表是int //2.定义指向这种函数类型的指针类型 typedef int(*MY_FUNC_P)(int,int); int main(void) { //1. MY_FUNC *fp=NULL; fp=func; fp(10,20); //2. MY_FUNC_P fp = NULL; fp=func; fp(10,20); //3. int(*fp1)(int,int)=NULL; //常用 (在这一步已经发生重载) fp1=func; //若有对func()函数重载,fp1->func(int,int)函数(参数类型个数匹配) fp1(10,30); fp1(10,30,20) //错误,fp1已经是指向了func(int,int)函数 //三个参数的函数同理 } 在给函数指针赋值的时候,发生函数重载匹配 在调用函数指针的时候,所调用的函数已经固定 所以函数重载与函数类型的函数重载主要区别在于,一般的函数重载发生在函数调用的时候 而函数类型的函数重载发生在给函数指针赋值的时候 //指向函数类型指针的格式 返回值类型(*指针名)(参数列表)=NULL; 如:int(*fp)(int,int)=NULL; //自定义函数类型 typedef int(MY_FUNC)(int ,int); 同样,返回值类型(函数类型名)(参数列表)
原文地址:https://www.cnblogs.com/god-for-speed/p/10924495.html
时间: 2024-10-03 01:47:14