2015年5月22日金曜日

関数オブジェクト(C++)

()は関数呼び出しの演算子である。クラス定義中に、()をoperatorとしてオーバーロードすると、オブジェクトを関数呼び出しの形で呼び出せる。これが、関数オブジェクトである。
//
// function_object.cpp
// CplusplusPractice
//
// Created by masai on 2015/05/22.
// Copyright (c) 2015年 masai. All rights reserved.
//
#include <iostream>
using namespace std;
// 10倍にして返す関数オブジェクト(このように定義すると、ヘッダーに処理内容も記述が可能)
class FunctionObject{
public:
int operator()(int value){
return value * 10;
}
};
struct FunctionStructObject{
int operator()(int value){
return value * 20;
}
};
int main(int argc, char* argv[]){
FunctionObject obj;
cout << obj(5) << endl;
FunctionStructObject structObj;
cout << structObj(5) << endl;
}

0 件のコメント:

コメントを投稿