function类型(c++11)
1.c++五大可调用的对象
可调用的对象常常作为泛型算法的实参
1)函数
2)函数指针

- 函数名其实也是函数指针,只不过函数名是一个常量指针,它的值不能改变,只能指向该函数,不能改变它的值让它指向别的函数
void fun1(int a)
{
cout << a << endl;
} void fun2(int a)
{
cout << a+ << endl;
} int main()
{
void(*f)(int); //f是一个函数指针
f = fun1; //将f指向函数fun1()
f(); //输出6
f = fun2; //将f指向函数fun2()
f(); //输出:16 (*fun1)(); //fun1其实也是函数指针,并且是一个常量指针,它只能指向函数fun1(),不能让它指向别的函数
fun1 = fun2; //编译错误:不可以修改常量指针的指向(值) return ;
}
4)bind对象
5)重载了opeartor()运算符的类
2.可调用的对象的调用形式
int(int, int) //此调用形式表示:接受两个int,返回一个int
3.function类型(c++11)
1)function类型可以将调用形式相同的可调用对象统一成一种类型
2)把可调用对象定义成function类型后,可以直接使用function类型来“简化”调用

3)不能直接将重载的函数名存入function类型的对象中
int add(int a, int b)
{
return a + b;
} int add(int a, int b, string s)
{
return a;
} int main()
{
function<int(int, int)> f1 = add; //编译错误,编译器不知道是哪个add
int(*fun)(int, int) = add;
function<int(int, int)> f2 = fun; //正确:函数指针fun指向带有两个参数的add()函数
cout << f2(, ) << endl; //输出3
function<int(int, int)> f3 = [](int a, int b) {return add(a, b); }; //正确:使用lambda表达式来指定带有两个参数的add()函数
cout << f3(, ) << endl; //输出7 return ;
}
解决:
- 使用函数指针来指向某个重载函数
- 使用lambda表达式来指向某个重载函数
function类型(c++11)的更多相关文章
- 引用类型-Function类型
Function类型 定义函数的三种方式: 1.函数声明 function sum(num1,num2){ return num1 +num2; } 2.函数表达式 var sum = functio ...
- 【笔记】js Function类型 内部方法callee
运用function实现阶乘 以往的做法是如下的 function factorial(num){ if(num <= 1){ return 1; }else{ return num * fac ...
- Function类型
1.每个函数都是Function类型的,和其他引用类型一样都具有属性和方法.函数也是对象,因此函数实际上是一个指向函数对象的指针. 函数声明语法定义: 方法1: function sum(num1,n ...
- JavaScript笔记——引用类型之Object类型和Function类型
<JavaScript高级程序设计>中介绍的几种JavaScript的引用类型,本文只记了Object跟Function类型 Object类型 创建对象 var person = new ...
- String类型,Function类型
1.String类型: 1)创建String对象: var str=new String(s); String(s); 参数:参数 s 是要存储在 String 对象中的值或转换成 ...
- JavaScript高级 Function类型
· Function类型 (属于引用类型) 1.JS中,有的函数均是对象,这个一个非常有特点的地方.它既然是对象,那么它的构造函数是谁呢?就是Function.(例如:function Pers ...
- 浅析JavaScript之Function类型
JavaScript中的函数实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上只是指向函数对象的指针,保存函数在堆内存中的地 ...
- 笔记——Function类型 及其 call、apply方法
每个函数都是Function类型的实例.函数有三种定义方式和两个内部属性arguments和this. 同时函数也是对象,也有属性和方法.本篇主要其call()和apply()方法 属性 length ...
- 引用类型之Function类型
Function类型 ECMAScript中最有意思的就是函数了,有意思的根源,在于函数实际上是对象.每个函数都是Function的实例,具有属性和方法.而重要的一点是,函数名,不过是指向函数的指针, ...
随机推荐
- 宝塔Linux面板 概述
安装要求: Python版本: 2.6/2.7(安装宝塔时会自动安装) 内存:128M以上,推荐512M以上(纯面板约占系统10M内存) 硬盘:100M以上可用硬盘空间(纯面板约占20M磁盘空间) 系 ...
- linux如何搭建sftp服务器
工具/原料 centos7.2_x64 方法/步骤 创建sftp组 groupadd sftp 创建完成之后使用cat /etc/group命令组的信息 2 创建一个sftp用户mysft ...
- ios 获取当前时间
1.第一种返回的时间是一个整个的字符串. NSDate *timeDate = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateForm ...
- export命令
http://blog.csdn.net/wl_fln/article/details/7258294 http://man.linuxde.net/export export命令 功能说明:设置或显 ...
- vue-awesome-swiper轮播的使用
一.安装vue-awesome-swiper npm install vue-awesome-swiper --save 二.引入插件 main.js里面分别引入(记得有些电脑要引入样式) impor ...
- 10.19JS日记
1.函数 关键词(function) var是js的关键字,用于声明变量,声明在内存模块完成,定义(=)是在执行模块完成 var可以在内存模块提前完成(js代码执行前),所以有变量提升这个功能 c ...
- 关于sortedlist 中值的添加,删除,索引测试.
SortedList 类代表了一系列按照键来排序的键/值对,这些键值对可以通过键和索引来访问. 排序列表是数组和哈希表的组合.它包含一个可使用键或索引访问各项的列表.如果您使用索引访问各项,则它是一个 ...
- Linux CentOS 7 & JDK 1.7 安装与配置
前言 简单记录一下在CentOS 7中安装配置JDK 1.7的全过程~ 下载 首先是jdk 1.7 64bit & 32bit的下载地址: jdk-7u79-linux-x64.tar.gz ...
- poj 2886 (线段树+反素数打表) Who Gets the Most Candies?
http://poj.org/problem?id=2886 一群孩子从编号1到n按顺时针的方向围成一个圆,每个孩子手中卡片上有一个数字,首先是编号为k的孩子出去,如果他手上的数字m是正数,那么从他左 ...
- 性能(js)
1.避免全局查找: <script type="text/javascript"> function updateUI(){ var imgs=document.get ...