在C++中,可以通過繼承和組合兩種方法來擴展函數對象(也稱為仿函數或functor)的功能。
例如:
class BaseFunctor {
public:
virtual ~BaseFunctor() {}
virtual int operator()(int x, int y) = 0;
};
class DerivedFunctor : public BaseFunctor {
public:
int operator()(int x, int y) override {
return x * y + 1; // 實現自己的特殊操作
}
};
例如:
class CombinedFunctor {
public:
CombinedFunctor(std::function<int(int, int)> func) : func_(func) {}
int operator()(int x, int y) {
return func_(x, y); // 調用函數對象
}
private:
std::function<int(int, int)> func_;
};
使用示例:
auto func = [](int x, int y) { return x * y; };
CombinedFunctor combinedFunc(func);
int result = combinedFunc(3, 4); // 輸出12,同時調用了函數對象和CombinedFunctor中的方法