I have been programming with the STL for a while now and I have a question about using functors. Look at this codeNote how I use :: plus which is an object that overrides () and then I use my_print which is a function. I understand that they both do the same thing (:: plus() calls overloaded () operator and my_print is a function pointer) I was wondering why the STL uses classes and inheritance (i.e. inheriting from binary_function<arg1,arg2, retval>). Is this so you can store more information in a function like member variables? Also, is there any difference in performance between the two ways I used STL functions?Code:#include <iostream> #include <vector> #include <algorithm> using namespace std; struct plus : public binary_function<int, int, int> { int operator() (int x, int y) { return x + y; } }; void my_print(int x) { cout << x << endl; } int main(void) { vector<int> v(5); vector<int> w(5); vector<int> x(5); fill(v.begin(),v.end(), 5); fill(w.begin(),w.end(), 1); transform(v.begin(),v.end(), w.begin(), x.begin(), ::plus()); for_each(x.begin(), x.end(), my_print); return 0; }