设计一个复数Complex类,用友元函数重载乘法运算符(*),用成员函数重载除法运算符(/),完成两个复数对象的乘除法。加法:(a+bi) + (c+di) = (a+c) + (b+d)i; 减法:(a+bi)- (c+di)= (a-c) + (b-d)i; 乘法:(a+bi) * (c+di) = (ac-bd) + (ad+bc)i; 除法:(a+bi)/ (c+di) = ((a+bi)(c-di))/ (c*c+d*d);
时间: 2023-10-27 16:05:56 浏览: 89
好的,我已经理解了你的要求,下面是这个复数Complex类的实现:
```c++
#include <iostream>
using namespace std;
class Complex {
private:
double real; // 实部
double imag; // 虚部
public:
Complex(double r = 0, double i = 0) : real(r), imag(i) {}
friend Complex operator*(const Complex& a, const Complex& b);
Complex operator/(const Complex& b);
Complex operator+(const Complex& b);
Complex operator-(const Complex& b);
void print() const {
cout << real << " + " << imag << "i" << endl;
}
};
Complex operator*(const Complex& a, const Complex& b) {
return Complex(a.real * b.real - a.imag * b.imag, a.real * b.imag + a.imag * b.real);
}
Complex Complex::operator/(const Complex& b) {
double denominator = b.real * b.real + b.imag * b.imag;
double numerator_real = real * b.real + imag * b.imag;
double numerator_imag = imag * b.real - real * b.imag;
return Complex(numerator_real / denominator, numerator_imag / denominator);
}
Complex Complex::operator+(const Complex& b) {
return Complex(real + b.real, imag + b.imag);
}
Complex Complex::operator-(const Complex& b) {
return Complex(real - b.real, imag - b.imag);
}
```
上面的代码中,我们重载了乘法运算符(*)、除法运算符(/)、加法运算符(+)和减法运算符(-),其中乘法运算符重载为友元函数,除法运算符、加法运算符和减法运算符则重载为成员函数。
下面是一个使用示例:
```c++
int main() {
Complex a(1, 2), b(2, 3);
Complex c = a * b;
Complex d = a / b;
Complex e = a + b;
Complex f = a - b;
c.print(); // 输出:-4 + 7i
d.print(); // 输出:0.615385 + 0.0769231i
e.print(); // 输出:3 + 5i
f.print(); // 输出:-1 - 1i
return 0;
}
```
在使用时,我们可以直接使用乘法运算符、除法运算符、加法运算符和减法运算符进行计算,输出结果也可以使用 print() 函数进行输出。
阅读全文