2019年3月4日 星期一

c++ functor(Function object)

一個類型裏面宣告了雙小括號運算方法 operator ( )( ), 讓實例化後的物件具有函式的功能,可以用變數名稱附加雙小括號呼叫去執行. 看以下範例:
// functor.c
#include <stdio.h>
struct functor {
    int operator ( ) (int op){  // 參數 op
        return op * 3 ;  // 回傳 3 倍
    }
};  // 新類型宣告結束, 記得加分號
int main( ) {
  functor A; // 實例化一個 functor, 變數是 A
  printf( "%d\n", A(3)  ) ;            // A 呼叫運算方法 ( )
}
用  g++   functor.c   &&   ./a.out 執行看
9

沒有留言: