C++ 重载*=对于复数

C++ 重载*=对于复数,c++,class,numbers,C++,Class,Numbers,我很难记下a函数(a+bi)*(c+di)的算法,它与重载运算符(*=)的(ac bd)+(ad+bc)相同 到目前为止,我已经为我的重载函数准备了这个。对于重载*=的定义,我不知道写什么来包含(ac-bd)的-bd部分 #包括 使用std::cout; 使用std::cin; 使用std::endl; 阶级情结{ 公众: 复合(双=0,双=0); void print()const{cout您可以使用std::tie和std::make_tuple执行多重赋值: std::tie(real,

我很难记下a函数(a+bi)*(c+di)的算法,它与重载运算符(*=)的(ac bd)+(ad+bc)相同 到目前为止,我已经为我的重载函数准备了这个。对于重载*=的定义,我不知道写什么来包含(ac-bd)的-bd部分

#包括
使用std::cout;
使用std::cin;
使用std::endl;
阶级情结{
公众:
复合(双=0,双=0);

void print()const{cout您可以使用
std::tie
std::make_tuple
执行多重赋值:

std::tie(real, imag) = std::make_tuple(real*z.real - imag*z.imag,
                                       real*z.imag + imag*z.real);
return *this;

您可以使用
std::tie
std::make\u tuple
执行多重赋值:

std::tie(real, imag) = std::make_tuple(real*z.real - imag*z.imag,
                                       real*z.imag + imag*z.real);
return *this;

它本质上是
*this=*this*z
的一个变体。我们通常用
*=
来表达
*
,但在这里相反是有意义的。它本质上是
*this=*this*z
的变体。我们通常用
*=
来表达
*
,但在这里相反是有意义的。