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

 

原文链接: https://www.cnblogs.com/god-for-speed/p/10924495.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

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

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/295547

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 下午5:02
下一篇 2023年2月15日 下午5:03

相关推荐