Correct. However, if all of the constructor parameters are being defaulted, then the two should be functionally equivalent. Thus there's no need to define both if they do the same thing. If they aren't functionally equivalent, the class design has a logical ambiguity that needs to be resolved. This logical ambiguity is simply being reflected as a syntactic ambiguity, and you may yourself lucky that the compiler caught the problem for you.