[C++]函數指針的用法

c++成員函數指針

class MyClassA
{
public:
	MyClassA();
	~MyClassA();
	int Method1();
private:

};

MyClassA::MyClassA()
{
}

MyClassA::~MyClassA()
{
}

int MyClassA::Method1()
{
	int a = 0;
	return a;
}

int main()
{
	int (MyClassA :: * pMethod1)() = &MyClassA::Method1;//函數指針初始化,格式:返回類型(函數指針變量名及作用域)(函數指針指向函數的參數)
	//pMethod1 = &MyClassA::Method1;//函數指針重定向

(myClassA.*pMethod1)();//通過指針調用
}

將函數指針作爲函數參數傳入

這種方式可以用來實現函數回調的功能。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class MyClassA
{
public:
	MyClassA();
	~MyClassA();
	int Method1();
private:

};

MyClassA::MyClassA()
{
}

MyClassA::~MyClassA()
{
}

int MyClassA::Method1()
{
	int a = 0;
	return a;
}

class MyClassB
{
public:
	MyClassB();
	~MyClassB();
	int Method2(int (MyClassA ::* pMethod1)());
private:

};

MyClassB::MyClassB()
{
}

MyClassB::~MyClassB()
{
}

int MyClassB::Method2(int (MyClassA ::* pMethod1)())//以函數指針爲參數的函數
{
	MyClassA myClassA;
	int a = (myClassA.*pMethod1)();//通過函數指針調用目標函數
	return a;
}

int main()
{
	int (MyClassA :: * pMethod1)() = &MyClassA::Method1;//函數指針初始化,格式:返回類型(函數指針變量名及作用域)(函數指針指向函數的參數)
	//pMethod1 = &MyClassA::Method1;//函數指針重定向

	MyClassB myClassB;
	myClassB.Method2(pMethod1);
}

打個斷點單步跑一下就一目瞭然

第一步

在這裏插入圖片描述

第二步通過類B的參數傳入的函數指針調用類a函數

在這裏插入圖片描述

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