zoukankan      html  css  js  c++  java
  • C++函数类型

    继续上一篇

    #include <iostream>
    
    using namespace std;
    
    
    void swap1(int &v1, int &v2);
    typedef void (FP_)(int&, int&);//必须在FP_使用前定义!!!
    void func(int &v1, int &v2, FP_ fp);
    
    int main()
    {
        void (*fp)(int&,int&);//here, fp is a variable
        cout<<"uninitialized function pointer:"<<fp<<endl; //warning!
        fp=swap1;//initialized
    
        int v1=10;
        int v2=20;
    
        fp(v1, v2);
        cout<<v1<<"	"<<v2<<endl;
    
        //****************
        typedef void (*FP)(int&, int&);//define FP as a TYPE!
        FP fp1=0; //fp1 is a variable.
        cout<<fp1<<endl;//0
        fp1=swap1; //initialized
        cout<<fp1<<endl;//1
    
        fp1(v1, v2);
        cout<<v1<<"	"<<v2<<endl;
    
    
    
    //    FP_ fpx;
    //    fpx=swap1; //Error
    //    func(v1, v2, fpx);
        func(v1, v2, swap1); //函数名就是函数类型的变量!!!
    
        return 0;
    }
    
    //函数
    void swap1(int &v1, int &v2){
        int tmp=v1;
        v1=v2;
        v2=tmp;
    }
    //函数类型的形参
    void func(int &v1, int &v2, FP_ fp){
        fp(v1,v2);
    }

    函数是类型(由返回值和形参列表确定),函数名则是该类型的变量!
    typedef只是给这种类型取个别名,而这种类型实际上在定义函数的时候就已经存在了。
      
    所以直接传入函数名即可!
      
    目前的问题是:为什么定义了函数类型的变量f,却无法使用函数名(变量take)来赋值?

    被告知:functions are not objects。

    所以函数名当成变量名好像是有问题的???

  • 相关阅读:
    UE4 WCF RestFul 服务器 读取JSON 数据并解析 简单实例
    Android aidl Binder框架浅析
    AIDL
    android 五种存储方式
    Android进程间通信机制
    Service全面总结
    Android平台中关于音频播放
    Android广播机制
    Cursor,CursorAdapter中的观察者模式解析
    ContentProvider和Uri详解
  • 原文地址:https://www.cnblogs.com/larryzeal/p/5594251.html
Copyright © 2011-2022 走看看