#include using namespace std; class C { public: void operator()(); void operator()(int x); void operator()(int x, int y, int z); void operator()(int x, int y, int z)const; // then all of your other stuff private: //private stuff }; void C::operator()() { cout << "operator () with no parameters" << endl; } void C::operator()(int x) { cout << "operator () with 1 parameters" << endl; } void C::operator()(int x, int y, int z) { cout << "operator () with 3 parameters" << endl; } void C::operator()(int x, int y, int z)const { cout << "const operator () with 3 parameters" << endl; } void main() { C object; object(); object(1); object(1,1,1); const C Const_Object; Const_Object(1,1,1); // you can not call non-const member functions using a const object //Const_Object(); //Const_Object(1); }