C++高級-回調函數 超簡單實現Demo

Mylib.h

#pragma once
char (*Call)(char a)=NULL;
char s='s';
void RunFun() {
	Call(s);
	
}
void Init(char (*IN_CallMain)(char a),char IN_M)
{
	IN_CallMain(IN_M);
}

Main.cpp

#include <iostream>
#include "Mylib.h"

//首先明確一個概念,不管是函數,變量,執行的時候C++無外乎一個操作,尋址,尋址尋址。執行的時候都是尋址(這裏要淡化變量和函數的區別)。

/*
區別:
typedef char (*CallMain)(char a);//CallMain是一個類型,可以用它定義函數指針
char (*Call)(char a);//Call是一個函數指針,直接拿來用做函數入口
*/
typedef char (*CallMain)(char a);

char hello(char IN_a)
{
	std::cout << IN_a << std::endl;
	return 't';
}

int main()
{
	//第一種實現方式
	//定義函數指針並且賦值
	CallMain pfun = hello;
	//在Init函數裏執行hello()
	Init(pfun,'m');
	//第二種實現方式
	Call = hello;
	RunFun();
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章