今天項目中用到函數指針,故做筆記。函數指針的聲明和普通變量的聲明很不一樣,在此傳回值為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;
}