Constructor overloading requires each constructor to have a unique parameter signature (number, order, or data types of parameters). If two constructors had identical parameter lists, the compiler couldn't determine which one to call when creating an object with those arguments.