Just like a regular function a constructor function is also overloaded. The reasons behind this are:
1) For flexibility: Constructor functions are overloaded to avoid compile time errors and when they are overloaded they increase the flexibility of the code.
2) For Creating initialized and uninitialized objects: To create both initialized and uninitialized objects a constructor function has to be overloaded.
3) Constructor functions are overloaded for defining copy constructors.