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 ;
}

3)lambda表达式

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表达式来指向某个重载函数

最新文章

  1. nodejs URL解析
  2. c++ 在windows下获取时间和计算时间差的几种方法总结
  3. MS SQLServer的关键词BETWEEN的一些注意事项
  4. [Android Pro] 临时关闭selinux模式 setenforce 0
  5. [再寄小读者之数学篇](2014-11-19 $\sin x/x$ 在 $(0,\pi/2)$ 上递增)
  6. selenium + python网页自动化测试环境搭建
  7. [Mime] MimeEntity--MimeEntity Mime实体帮助类 (转载)
  8. java 修改文件名
  9. android开发关于和使用本机内存、内置存储卡和外置存储卡 (转)
  10. 【小白的java成长系列】——java ide 开发工具eclipse的操作
  11. 解决打开png图片黑屏问题(批量还原Xcode优化后的png)
  12. 数塔~~dp学习_1
  13. linux下的Shell编程(7)使用-x和-n调试shell程序
  14. 递归dict
  15. 开源视频会议系统:OpenMeetings 安装方法
  16. Powershell批量安装SNMP服务
  17. 分页控件 AspNetPager的使用
  18. 《ASP.NET MVC企业实战》(二) MVC开发前奏
  19. Mac下的安装 mongodb
  20. centos6安装python3

热门文章

  1. python——线程相关
  2. 【Linux 线程】常用线程函数复习《二》
  3. easyui datagrid 三层嵌套
  4. LWP::UserAgent的用法
  5. 先安装win7时IIS的安装
  6. 43-将javaweb项目部署到Linux服务器
  7. 针对appium的webdriver执行swipe无效的解决办法
  8. rosrun和roslaunch
  9. Python中的 __all__和__path__ 解析
  10. Phong和Blinn-Phong光照模型