码迷,mamicode.com
首页 > 编程语言 > 详细

C++函数类型

时间:2016-06-17 17:08:59      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

继续上一篇

 

#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<<"\t"<<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<<"\t"<<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)来赋值?

 

C++函数类型

标签:

原文地址:http://www.cnblogs.com/larryzeal/p/5594251.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!