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=;
int v2=; fp(v1, v2);
cout<<v1<<"\t"<<v2<<endl; //****************
typedef void (*FP)(int&, int&);//define FP as a TYPE!
FP fp1=; //fp1 is a variable.
cout<<fp1<<endl;//
fp1=swap1; //initialized
cout<<fp1<<endl;// fp1(v1, v2);
cout<<v1<<"\t"<<v2<<endl; // FP_ fpx;
// fpx=swap1; //Error
// func(v1, v2, fpx);
func(v1, v2, swap1); //函数名就是函数类型的变量!!! return ;
} //函数
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++函数类型的更多相关文章
- 明显调用的表达式前的括号必须具有(指针)函数类型 编译器错误 C2064
看到“明显调用的表达式前的括号必须具有(指针)函数类型”这句时我才发现我的语文水平有多烂,怎么看都看不懂,折腾了半天才知道是哪里出了问题. 举个简单的例子 class CTest { void (CT ...
- Swift - 33 - 返回函数类型和函数嵌套
//: Playground - noun: a place where people can play import UIKit /*---------------------------返回函数类 ...
- Swift - 32 - 函数类型
//: Playground - noun: a place where people can play import UIKit func add(a:Int, b:Int) -> Int { ...
- C语言的函数类型
C语言的函数类型与返回值类型不一致时出现,是以函数类型为标准; 而如果在java与c#语言中上述情况是编译错误的;
- 智能合约语言 Solidity 教程系列3 - 函数类型
Solidity 教程系列第三篇 - Solidity 函数类型介绍. 写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以 ...
- TypeScript 函数-函数类型
//指定参数类型 function add(x:number,y:number){ console.log("x:"+x); // reutrn(x+y); } //指定函数类型 ...
- go 函数类型
在go中,函数也可以被当成数据类型 e.g:下面有两个函数,+.-,然后定义了一个函数类型FuncType1,然后对funcType1附于不同的函数,则funcType1就可以执行相应的函数 pack ...
- TypeScript基础类型,类实例和函数类型声明
TypeScript(TS)是微软研发的编程语言,是JavaScript的超集,也就是在JavaScript的基础上添加了一些特性.其中之一就是类型声明. 一.基础类型 TS的基础类型有 Boolea ...
- typescript函数类型接口
/* 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用.接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据, ...
- Swift2.0语言教程之函数的返回值与函数类型
Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有 ...
随机推荐
- java使用ssh访问Linux的项目jscraft
一.gradle地址 // https://mvnrepository.com/artifact/com.jcraft/jsch compile group: 'com.jcraft', name: ...
- bzoj 1860: [Zjoi2006]Mahjong麻将 题解
[原题] 1860: [Zjoi2006]Mahjong麻将 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 211 Solved: 122 [Subm ...
- python标准库介绍——2 os.path模块详解
== os.path 模块 == ``os.path`` 模块包含了各种处理长文件名(路径名)的函数. 先导入 (import) ``os`` 模块, 然后就可以以 ``os.path`` 访问该模块 ...
- appium +uiautomator2 遇到 deviceName can't be blank 提示的解决
为了获取android toast ,需要升级selenium 到 3.4.0 和appium 5.0.0-BETA9 到最新版本,并在启动代码前面追加一行代码: capabilities.setCa ...
- svn导出历史版本
svn导出历史某一个版本,有时候想拷贝出项目某个版本的代码,又不希望覆盖现在的代码,需要用到导出历史版本 1.浏览历史版本 鼠标移到项目上右击显示: 2.选择显示日志,出现版本历史记录: 3.选 ...
- 【Android】12.5 利用Intent读取和更新通讯录
分类:C#.Android.VS2015: 创建日期:2016-02-23 修改日期:2016-03-08更正了未关闭cursor的bug. 一.简介 本节演示如何在安卓系统中通过用户配置文件(us ...
- 详解设计模式在Spring中的应用---转载
Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范.好了,话不多说,开始今天的内容. spring中常用的设计模式达到九种,我们一一举例: 第一种:简单工厂 又叫 ...
- LoadRunner Controller 常见用法
Controller 工作原理:通过场景设计来模拟用户的真实操作并调用vugen中的脚本,再通过设置的压力机产生压力 Scenario-convert scenario to the percenta ...
- 使用TortoiseGit操作分支的创建与合并功能集合
使用TortoiseGit操作分支的创建与合并 本文在介绍了软件安装和设置后, 写了TortoiseGit 常用的一些功能, 包括: 创建新库 添加文件及文件夹 创建分支 看分支情况及修改log 比较 ...
- LeetCode: Median of Two Sorted Arrays 解题报告
Median of Two Sorted Arrays There are two sorted arrays A and B of size m and n respectively. Find t ...