[ ] Чтобы не реализовывать эти операции дважды, бинарные операции лучше реализовать вне класса в виде Complex+Complex и т.п. Тогда встретив Complex+double или double+Complex компилятор при помощи конструктора, принимающего один параметр создаст Complex и вызовет соотв. оператор. Также операции +, -, * и / обычно реализуются через присваивающие операции.
https://github.com/Curpiq/oop_labs/blob/36addacd45c4b6e5f4bc4d23f7094e5e558a46f1/lab05/Complex/Complex/Complex.cpp#L23-L26