C++ 使用回调函数的方式 和 作用。 持续更新

先看两个demo:

一.在类test1中调用函数print() ,把print()的函数指针传递给test1的函数指针参数

test1.h:

[cpp] view plain copy

  1. #include <stdio.h>
  2. #include <iostream>
  3. using namespace std;
  4. typedef void (*FUNP)();
  5. class test1
  6. {
  7. public:
  8. void fun1(FUNP p)
  9. {
  10. (*p)();
  11. }
  12. };

main.cpp

[cpp] view plain copy

  1. #include <stdio.h>
  2. #include "test1.h"
  3. void print();
  4. int main()
  5. {
  6. test1 tet1;
  7. tet1.fun1(print);
  8. getchar();
  9. return 0;
  10. }
  11. // void (*p)()
  12. void print()
  13. {
  14. printf("hello world\n");
  15. }

// 打印 “hello world”

二.类Test1 中调用Test2的方法函数。  在类test2中包含test1对象,将test2中的函数指针传给test1

test2.h:

#include "test1.h"

[cpp] view plain copy

  1. #include <iostream>
  2. using namespace std;
  3. class Test2
  4. {
  5. public:
  6. Test2()
  7. {
  8. tet1.fun1(fun2);
  9. }
  10. static void fun2()
  11. {
  12. cout<<"Test2"<<endl;
  13. }
  14. public:
  15. test1 tet1;
  16. };

test1.h:

[cpp] view plain copy

  1. #include <stdio.h>
  2. #include <iostream>
  3. using namespace std;
  4. typedef void (*FUNP)();
  5. class test1
  6. {
  7. public:
  8. void fun1(FUNP p)
  9. {
  10. (*p)();
  11. }
  12. };

main:

[cpp] view plain copy

  1. #include <stdio.h>
  2. #include "test2.h"
  3. int main()
  4. {
  5. Test2 tet2;
  6. getchar();
  7. return 0;
  8. }

// 结果:打印“Test2”

附上两个deome,搞清楚的话 回调函数基本可以套着用了

http://download.csdn.net/my

http://blog.csdn.net/qq_17242957/article/details/53002652

时间: 2024-10-05 18:37:15

C++ 使用回调函数的方式 和 作用。 持续更新的相关文章

JS回调函数的使用和作用

<html> <head> <title>回调函数(callback)</title> <script language="javascript" type="text/javascript">     function test(){         var score = document.getElementById("score").value;         myfun(sc

【前端】Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)

Util.js (持续更新中...) 项目地址: https://github.com/dragonir/Util.js 项目描述 Util.js 是对常用函数的封装,方便在实际项目中使用,主要内容包含:数组类.浏览器类.日期类.函数类.数学类.媒体类.节点类.对象类.字符串类.类型检测类.正则表达式类等内容. 使用方法 1. 引入Bable transpiler以保证支持ES6 <script type="javascript/text" src="./browser

关于JQUery.parseJSON()函数的知识札记(持续更新中。。。)

JSON数据也许大家都很陌生,而对我来讲属于半成品,由于项目问题,做web虽然用的是JSON数据格式传输,但是关于解析这一块还真不知道该注意什么,更不知道它是如何解析的,由于最近要把串口通信协议与此一致,所以,今天下午特地了解了一下JQuery.parseJSON()函数的相关知识,在此做一次摘录,成为自己的东西. 1.严格的JSON数据格式: (1)如果想在网页正确显示自己想要的数据,仅仅通过.parseJSON(jsonstring)函数解析不行,关键在于里面的参数,即JSON数据格式正确与

php函数源代码 C编写 【持续更新】

strlen() 获取字符串长度,成功则返回字符串 string 的长度:如果 string 为空,则返回 0. #include<stdio.h> #include<stdlib.h> #define N 1000 int count = 0; int strlen(char *str) { int num = 0; //定义一个计数器 while('\0' != *str++) { num++; } return num; } void test(char *str) { pr

Python常用函数、方法总结(持续更新…)

函数 filter() 函数 用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表. 该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中. filter(function, iterable) def is_odd(n): return n % 2 == 1 newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

Python3中的内置函数,实例讲解-每日持续更新

all >>> m = [] >>> n = [1,2,3] >>> l = [1,''] >>> all(m) True >>> all(n) True >>> all(l) False >>> dir Without arguments, return the list of names in the current local scope.eg: >>> d

C++中回调函数(CallBack)的使用

如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过. 其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递this指针给其成员函数从而实现成员函数可以访问C++的数据成员.这也可以理解为什么C++类的多个实例可以共享成员函数却-有不同的数据成员.由于this指针的作用,使得将一个CALL-BACK型的成员函数作为回调函数安装时就会因为隐含的this指针使得函数参数个数不匹配,从而导致回调函数安装失败.要解决这一问题的关键就是不让t

c回调函数(真不好理解)

什么是回调函数(callback) 模块A有一个函数foo,它向模块B传递foo的地址,然后在B里面发生某种事件(event)时,通过从A里面传递过来的foo的地址调用foo,通知A发生了什么事情,让A作出相应反应. 那么我们就把foo称为回调函数. 例子: 回调函数是一个很有用,也很重要的概念.当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数.回调函数在windows编程使用的场合很多, 比如Hook回调函数:MouseProc,GetMsgProc以及EnumWindows,Dr

深入浅出剖析C语言函数指针与回调函数(一)【转】

本文转载自:http://blog.csdn.net/morixinguan/article/details/65494239 关于静态库和动态库的使用和制作方法. http://blog.csdn.NET/morixinguan/article/details/52451612 今天我们要搞明白的一个概念叫回调函数. 什么是回调函数? 百度的权威解释如下: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说