Like any other function, a constructor can also be overloaded with more than one function that have the same name but different types or number of parameters. Remember that for overloaded functions the compiler will call the one whose parameters match the arguments used in the function call. In the case of constructors, which are automatically called when an object is created, the one executed is the one that matches the arguments passed on the object declaration. Example : Class A{ int x; public: A(){ cout<<"A Default"; } A(int i){ x=i; } A(A &ob){ x=ob.x; } void display(){ cout<<x<<endl; } }; void main(){ A obj; A obj1(5); A obj2(obj1); obj.display(); obj1.display(); obj2.display(); }