c++函数指针 对象内部的函数指针的使用

函数指针

函数指针在c语言定义就比较方便
举个例子,如果需要指向一个返回值为void参数为int , int的函数,可以如下定义函数指针类型

void sum(int a , int b) {
	//其实啥也不干,调用了个寂寞
}

//1. 直接定义的时候就给初始化
void (*p)(int , int) = sum;

//2. 使用typedef
typedef void (*pfun)(int , int);
pfun ptr = sum;

指向成员函数的指针

这里说明一点就是我之前尝试过如果在对象的类外部应该是不允许使用函数指针去直接调用函数的,会报错:对象函数只能由member ptr or this调用。

在class外的错误使用

//--- example.h里面
class example {
public:
	example();
	~example();
	void memFunc();
};

// ---- example.cc 
void example::memFunc() {}

// ---- main.cc
int main() {
	example e;
	void (example::*fptr)(void) =  &example::memFunc;
	//错误用法
	fptr();
	//正确用法
	auto ptr = bind( &example::memFunc , &e);
}

正确的使用方法

正确的使用方式是将函数与其参数绑定在一起变为一个适配器之后就有了调用的对象。给成员函数相应的执行对象。

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