void CComplex::multiply(CComplex &rhs) { double tmp = m_real; m_real = m_real*rhs.m_real - m_imaginary*rhs.m_imaginary; m_imaginary = tmp*rhs.m_imaginary + m_imaginary*rhs.m_real; } This routine will be correct if CComplex x(1,2), y(3, 4); x.multiply(y); but will be wrong if x.multiply(x);