Unlock the Power of C++ Functors
What are C++ Functors?
A C++ functor, also known as a function object, is a class or struct that can be called like a function. It overloads the function-call operator () and allows us to use an object like a function.
Creating a C++ Functor
To create a functor, we need to overload the function-call operator (). This allows us to call the class object as if it were a function. Remember to set public access specifier while overloading the () operator for the class, since by default the members of a class are private.
Example 1: A Simple C++ Functor
Let’s create a simple program that prints “Hello World!” using C++ functors.
“`cpp
class Greet {
public:
void operator()() {
std::cout << “Hello World!” << std::endl;
}
};
int main() {
Greet greet;
greet(); // Output: Hello World!
return 0;
}
“`
C++ Functors with Return Type and Parameters
We can also define a functor that accepts parameters and returns a value. For example, let’s create a functor that finds the sum of two integers.
“`cpp
class Add {
public:
int operator()(int a, int b) {
return a + b;
}
};
int main() {
Add add;
int sum = add(100, 78); // Output: 178
return 0;
}
“`
Example 2: C++ Functor with a Member Variable
Let’s create a functor that has a member variable and uses it to calculate the sum.
“`cpp
class AddToSum {
private:
int initialsum;
public:
AddToSum(int sum) : initialsum(sum) {}
int operator()(int num) {
initialsum += num;
return initialsum;
}
};
int main() {
AddToSum add(100);
int result = add(78); // Output: 178
return 0;
}
“`
C++ Predefined Functors
C++ provides predefined functors for arithmetic, relational, and logical operations. These functors can be used with C++ STL algorithms like sort, countif, allof, etc.
Example 3: C++ Predefined Functor with STL
Let’s use a predefined functor to sort a vector of integers in descending order.
“`cpp
include
include
include
int main() {
std::vector
std::sort(nums.begin(), nums.end(), std::greater
for (int num : nums) {
std::cout << num << ” “;
}
return 0;
}
“`
Frequently Asked Questions
- How do I create a custom functor?
- Can I use functors with C++ STL algorithms?
- How do I create a generic functor using class templates?
Get Started with C++ Functors Today!
Discover the power of C++ functors and take your programming skills to the next level. With this comprehensive guide, you’ll be able to create custom functors, use predefined functors, and master C++ STL algorithms.