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);
        同样,返回值类型(函数类型名)(参数列表)
  • 相关阅读:
    你的想像力智商有多高?
    Visual FoxPro 9.0 发布
    Google的社会网络
    女人永远是对的
    如何保存ICQ聊天历史
    7 30 个人赛
    Linux下利用文件描述符恢复的成功失败实验
    蓝鲸社区版部署
    Oracle 10.2.0.5升级至11.2.0.4
    手动创建Oracle实例
  • 原文地址:https://www.cnblogs.com/god-for-speed/p/10924495.html
Copyright © 2011-2022 走看看