If the arguments are different, the functions are different. So overloading ...
ComplexNumber operator+( const ComplexNumber& obj1, int obj2)
ComplexNumber X;
X + 10;
But not
10 + X;
... since the left operand and the right operand don’t match the function prototype above. So we might define the following too...
ComplexNumber operator+(int obj2, const ComplexNumber& obj1)