C++ functor
Date: 2019-09-13Last modified: 2023-04-05
Table of contents
class MyFunctor {
public:
int operator()(int x) { return x * 2; }
};
class Matcher {
int target;
public:
Matcher(int m) : target(m) {}
bool operator()(int x) { return x == target; }
};
class MultBy {
int mult = 1;
MultBy();
public:
MultBy(int n) : mult(n) { std::cout << "MultBy(" << mult << ") Ctor\n"; }
int operator()(int n) const {
return mult * n;
}
};
int main([[maybe_unused]] int argc, [[maybe_unused]] char **argv) {
MyFunctor doubler;
assert(doubler(5) == 10);
Matcher Is5(5);
auto n = 5;
assert(Is5(n)); // o mesmo que n == 5
const MultBy times4(4);
const MultBy times10(10);
const MultBy times15(15);
std::cout << "times4(5) = " << times4(5) << "\n";
std::cout << "times4(15) = " << times4(15) << "\n";
std::cout << "times10(5) = " << times10(5) << "\n";
std::cout << "times10(15) = " << times10(15) << "\n";
std::cout << "times15(5) = " << times15(5) << "\n";
std::cout << "times15(15) = " << times15(15) << "\n";
return 0;
}
Possible output
MultBy(4) Ctor
MultBy(10) Ctor
MultBy(15) Ctor
times4(5) = 20
times4(15) = 60
times10(5) = 50
times10(15) = 150
times15(5) = 75
times15(15) = 225