When you write
Complex a = 2;
the compiler will not directly invoke the constructor Complex, using 0 as the default argument for the assembly a, but instead it will consider whether it can "convert" 2 to Complex.
, Complex(re,im) , explicit, a.
"" . , Complex(re,im), , ++ .
, , a, 2.
const, a, , .
a Complex a(2), .
, , , Complex a = ... , , , . , , , const, , a ( - - ). , .