zoukankan      html  css  js  c++  java
  • 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);
        同样,返回值类型(函数类型名)(参数列表)
  • 相关阅读:
    WIN8 下 Hyper-V和Vmware Workstation
    小技巧总结
    工具软件
    php开发入门
    docker的用法总结
    [工具] 同步本地文件夹与VPS中的文件夹
    读书笔记之《The Art of Readable Code》Part 3
    读书笔记之《The Art of Readable Code》Part 2
    正则表达式小试牛刀
    读书笔记之《The Art of Readable Code》part 1
  • 原文地址:https://www.cnblogs.com/god-for-speed/p/10924495.html
Copyright © 2011-2022 走看看