天天看點

傳回值為函數指針

今天項目中用到函數指針,故做筆記。函數指針的聲明和普通變量的聲明很不一樣,在此傳回值為int,輸入參數為兩個int的函數指針為:

函數指針聲明為:int (*func)(int,int)

傳回函數指針的函數聲明為:int (*fun())(int,int)

見代碼:

#include <iostream>
using namespace std;

class Test{
public:
	Test(){};
	~Test(){};

	/*參數是指向函數的指針,類型為int (*)(int,int)
	 * ,形參值為func*/
	void add_func(int (*func)(int,int)){
		this->func_=func;
	}

	/*傳回值為指向函數的指針,函數名和參數清單為fun()
	 * ,傳回值為int (*)(int,int)*/
	int (*fun())(int,int){
		return func_;
	}
private:
	/* 成員變量為函數指針,這個函數傳回值為int,有兩個參數都是int
	 * 這個函數指針的類型為int (*)(int,int)
	 * */
	int (*func_)(int,int);
};

/*使用者自定義函數*/
int add(int x,int y){
	return x+y;
}

int main(){
	int a=1;
	int b=2;
	Test *t=new Test();
	t->add_func(add);
	int c=t->fun()(a,b);//t->fun()是函數指針
	cout<<"use the func pointer: "<<c<<endl;
	return 0;
}