C++ 関数ポインタとはなんぞや?コールバック関数の作り方


たまに聴く謎の言葉「関数ポインタ」について調べてみました。

関数ポインタ

関数を開始するアドレス(エントリポイント)を入れるための変数
次のように定義。

下記の例だと (*ptn) が関数ポインタ

hoge.cpp

int MyFunc(int a, int b){
    return a+b;
}

int main(){
   //戻り値の型 関数ポインタ Myfuncの引数の型  
   int (*ptn)(int,int) = MyFunc;

   // 関数ポインタを使って関数を実行も可能
   cout << ptn(10,10) << endl

}

コールバック関数

関数の引数に指定することで呼び出される関数。この例ではMyFunc関数

hoge.cpp
int MyFunc(int a, int b){
    return a+b;
}

int OutPutFunc(int (*ptn)(int,int)){
    cout << ptn(10,10);
}

int main(){
    OutPutFunc(MyFunc);
    return 0;
}