C++-------定义函数类型

函数重载和函数指针
  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);
    同样,返回值类型(函数类型名)(参数列表)

 

猜你喜欢

转载自www.cnblogs.com/god-for-speed/p/10924495.html
0条评论
添加一条新回复