C++函数类型
2016-06-17 15:48
429 查看
继续上一篇
函数是类型(由返回值和形参列表确定),函数名则是该类型的变量!
typedef只是给这种类型取个别名,而这种类型实际上在定义函数的时候就已经存在了。
所以直接传入函数名即可!
目前的问题是:为什么定义了函数类型的变量f,却无法使用函数名(变量take)来赋值?
被告知:functions are not objects。
所以函数名当成变量名好像是有问题的???
#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++)
- 标准C++中的string类的用法总结
- Additive Number
- 设计模式之建造者模式(C++实现)
- 合并两个已排序的链表
- 大数相加
- C++中map的基本操作和使用;
- 购买和销售股票最佳时机(C++)
- C++之TR1::function
- 一个C++类的注释:
- 算法导论第十六章-贪心算法-Cpp代码实现
- 树的操作(C++)
- C/C++二级指针的三种模型(一)
- C++STL各种实现版本介绍
- c语言的算术隐士转换
- 字符串的存储
- Bulb Switcher
- (转)用Eclipse进行C++开发时Bianry not found的问题解决
- stm32 外部中断库函数实现全程分析。(转,原作者历时三天,呕心沥血,剖析的很细致)