0
オーバーロードされた状態で(ac + bd)+(ad + bc)と同じ関数(a + bi)*(c + di)演算子(* =) これまでの私は、私のオーバーロードされた関数のためにこれを持っています。オーバーロードされた*への私の定義のために、(ac-bd)の-bd部分を含めるために何を書くべきか分からない。オーバーロード* =複素数の場合
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
class Complex {
public:
Complex(double = 0, double = 0);
void print() const { cout << real << '\t' << imag << '\n'; }
// Overloaded +=
Complex& operator +=(const Complex&);
// Overloaded -=
Complex& operator -=(const Complex&);
// Overloaded *=
Complex& operator *=(const Complex&);
// Overloaded /=
Complex& operator /=(const Complex&);
double Re() const { return real; }
double Im() const { return imag; }
private:
double real, imag;
};
int main()
{
Complex x, y(2), z(3, 4.5), a(1, 2), b(3, 4);
x.print();
y.print();
z.print();
y += z;
y.print();
a *= b;
a.print();
return 0;
}
Complex::Complex(double reel, double imaginary)
{
real = reel;
imag = imaginary;
}
// Return types that matches the one in the prototype = &Complex
Complex& Complex::operator+=(const Complex& z)
{
real += z.Re();
imag += z.Im();
//How to get an object to refer to itself
return *this;
}
Complex& Complex::operator *= (const Complex& z)
{
real *= (z.Re());
imag *= z.Re();
return *this;
}
このソリューションはとてもPythonesqueです... – StoryTeller
それは基本的に '*この= *この* z'の変種です。しばしば '*'を '* ='の形で表現しますが、ここでは逆の意味があります。 – MSalters