我是靠谱客的博主 踏实舞蹈,最近开发中收集的这篇文章主要介绍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<<"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)来赋值?

 

 

被告知:functions are not objects。

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

 

最后

以上就是踏实舞蹈为你收集整理的C++函数类型的全部内容,希望文章能够帮你解决C++函数类型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部